diff dyncall/dyncall_aggregate.c @ 551:eef302b7a58d

- amendment fix for buffer overflow (see commit 0455834d29a1), to also handle non-standard struct packing, + better asserts - changelog wording tweaks for clarity - comment tweaks for clarity - (mostly pointless) microoptimization in aggr alignment calculation, avoiding a modulo, as alignment always a power of 2 - cleanups
author Tassilo Philipp
date Mon, 20 Jun 2022 14:57:49 +0200
parents ba70fb631bea
children 1539ebfabebb
line wrap: on
line diff
--- a/dyncall/dyncall_aggregate.c	Mon Jun 20 14:24:37 2022 +0200
+++ b/dyncall/dyncall_aggregate.c	Mon Jun 20 14:57:49 2022 +0200
@@ -84,7 +84,7 @@
 			va_end(ap);
 
 			f->size = f->sub_aggr->size;
-			f->alignment = f->sub_aggr->alignment;
+			f->alignment = f->sub_aggr->alignment; /* field inherit's sub aggrs alignment*/
 			break;
 		}
 		default:
@@ -94,7 +94,7 @@
 	if(type != DC_SIGCHAR_AGGREGATE)
 		f->alignment = f->size;
 
-	/* aggr's field alignment is relative largest field size */
+	/* aggr's field alignment is relative to largest field size */
 	if(ag->alignment < f->alignment)
 		ag->alignment = f->alignment;
 }