Index: src/OFMethodSignature.m ================================================================== --- src/OFMethodSignature.m +++ src/OFMethodSignature.m @@ -299,19 +299,15 @@ size_t sizeofStruct(const char **type, size_t *length) { size_t size = 0; + const char *typeCopy = *type; + size_t lengthCopy = *length; + size_t alignment = alignofStruct(&typeCopy, &lengthCopy); #if defined(OF_POWERPC) && defined(OF_MACOS) bool first = true; - size_t alignment; - - { - const char *typeCopy = *type; - size_t lengthCopy = *length; - alignment = alignofStruct(&typeCopy, &lengthCopy); - } #endif assert(*length > 0); (*type)++; @@ -329,14 +325,16 @@ /* Skip '=' */ (*type)++; (*length)--; while (*length > 0 && **type != '}') { - const char *typeCopy = *type; - size_t lengthCopy = *length; - size_t fieldSize = sizeofEncoding(type, length); - size_t fieldAlign = alignofEncoding(&typeCopy, &lengthCopy); + size_t fieldSize, fieldAlign; + + typeCopy = *type; + lengthCopy = *length; + fieldSize = sizeofEncoding(type, length); + fieldAlign = alignofEncoding(&typeCopy, &lengthCopy); #if defined(OF_POWERPC) && defined(OF_MACOS) if (!first && fieldAlign > 4) fieldAlign = 4; @@ -362,20 +360,18 @@ @throw [OFInvalidFormatException exception]; (*type)++; (*length)--; -#if defined(OF_POWERPC) && defined(OF_MACOS) if (size % alignment != 0) { size_t padding = alignment - (size % alignment); if (SIZE_MAX - size < padding) @throw [OFOutOfRangeException exception]; size += padding; } -#endif return size; } size_t