diff options
author | Ton Roosendaal <ton@blender.org> | 2007-04-24 18:52:35 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2007-04-24 18:52:35 +0400 |
commit | 46545ac575e500d46aae3fabb05f6d46a7fb1797 (patch) | |
tree | 1fc020f78bbe1300e243068fd8665f26097c6661 /source/blender/makesdna/intern/makesdna.c | |
parent | 1ad4f024c8d73ead1867378d33bba47689473087 (diff) |
64 bits safety:
- makesdna now checks for struct-in-struct alignment (default 8 byte align)
- fixed two occurances of such struct-in-struct align errors
Diffstat (limited to 'source/blender/makesdna/intern/makesdna.c')
-rw-r--r-- | source/blender/makesdna/intern/makesdna.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index 1061581d7c5..4d437861751 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -195,7 +195,7 @@ int arraysize(char *astr, int len); /** * Determine how many bytes are needed for each struct. */ -int calculate_structlens(void); +static int calculate_structlens(int); /** * Construct the DNA.c file @@ -649,7 +649,7 @@ int arraysize(char *astr, int len) return mul; } -int calculate_structlens(void) +static int calculate_structlens(int firststruct) { int a, b, len, alphalen, unknown= nr_structs, lastunknown, structtype, type, mul, namelen; short *sp, *structpoin; @@ -712,6 +712,12 @@ int calculate_structlens(void) mul= 1; if( cp[namelen-1]==']') mul= arraysize(cp, namelen); + /* struct alignment */ + if(type >= firststruct) { + if(sizeof(void *)==8 && (len % 8) ) + printf("Align struct error: %s %s\n", types[structtype],cp); + } + /* 2-4 aligned/ */ if(typelens[type]>3 && (len % 4) ) { printf("Align 4 error in struct: %s %s (add %d padding bytes)\n", types[structtype], cp, len%4); @@ -893,7 +899,7 @@ int make_structDNA(char *baseDirectory, FILE *file) } if (debugSDNA) printf("\tFinished scanning %d headers.\n", i); - if (calculate_structlens()) { + if (calculate_structlens(firststruct)) { // error return(1); } |