Merge pull request #3368 from kirbyfan64/set_crash_fix

Fix #3367
This commit is contained in:
Andreas Rumpf 2015-09-24 15:59:30 +02:00
commit 683e1e8faf

View file

@ -1265,13 +1265,16 @@ proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt =
else: result = 8 else: result = 8
a = result a = result
of tySet: of tySet:
length = lengthOrd(typ.sons[0]) if typ.sons[0].kind == tyGenericParam:
if length <= 8: result = 1 result = szUnknownSize
elif length <= 16: result = 2 else:
elif length <= 32: result = 4 length = lengthOrd(typ.sons[0])
elif length <= 64: result = 8 if length <= 8: result = 1
elif align(length, 8) mod 8 == 0: result = align(length, 8) div 8 elif length <= 16: result = 2
else: result = align(length, 8) div 8 + 1 elif length <= 32: result = 4
elif length <= 64: result = 8
elif align(length, 8) mod 8 == 0: result = align(length, 8) div 8
else: result = align(length, 8) div 8 + 1
a = result a = result
of tyRange: of tyRange:
result = computeSizeAux(typ.sons[0], a) result = computeSizeAux(typ.sons[0], a)