From d59ec89d838ae14330e03c4dc11a596b56970975 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 14 May 2020 12:23:31 -0500 Subject: [PATCH] Small fixes to safety of hash iterator --- bh.h | 12 ++++++++---- onyx | Bin 42168 -> 42168 bytes 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bh.h b/bh.h index da236743..e0f20b2b 100644 --- a/bh.h +++ b/bh.h @@ -276,6 +276,10 @@ typedef struct bh_hash_iterator { #define bh_hash_has(T, tab, key) (assert(sizeof(T) == sizeof(*(tab))), (bh__hash_has((ptr *) tab, sizeof(T), key))) #define bh_hash_get(T, tab, key) (assert(sizeof(T) == sizeof(*(tab))), (*((T *) bh__hash_get((ptr *) tab, sizeof(T), key)))) #define bh_hash_delete(T, tab, key) (assert(sizeof(T) == sizeof(*(tab))), bh__hash_delete((ptr *) tab, sizeof(T), key)) + + #define bh_hash_iter_setup(T, tab) (bh__hash_iter_setup((ptr *) tab, sizeof(T))) + #define bh_hash_iter_key(it) (it.entry->key) + #define bh_hash_iter_value(T, it) (*(T *)&(it.entry->value)) #else #define bh_hash_init(tab) bh__hash_init((ptr **) &(tab)) #define bh_hash_free(tab) bh__hash_free((ptr **) &(tab)) @@ -283,11 +287,11 @@ typedef struct bh_hash_iterator { #define bh_hash_has(T, tab, key) (bh__hash_has((ptr *) tab, sizeof(T), key)) #define bh_hash_get(T, tab, key) (*((T *) bh__hash_get((ptr *) tab, sizeof(T), key))) #define bh_hash_delete(T, tab, key) (bh__hash_delete((ptr *) tab, sizeof(T), key)) -#endif -#define bh_hash_iter_setup(T, tab) (assert(sizeof(T) == sizeof(*(tab))), bh__hash_iter_setup((ptr *) tab, sizeof(T))) -#define bh_hash_iter_key(it) (it.entry->key) -#define bh_hash_iter_value(T, it) (assert(sizeof(T) == it.elemsize), *(T *)&(it.entry->value)) + #define bh_hash_iter_setup(T, tab) (assert(sizeof(T) == sizeof(*(tab))), bh__hash_iter_setup((ptr *) tab, sizeof(T))) + #define bh_hash_iter_key(it) (it.entry->key) + #define bh_hash_iter_value(T, it) (assert(sizeof(T) == it.elemsize), *(T *)&(it.entry->value)) +#endif b32 bh__hash_init(ptr **table); b32 bh__hash_free(ptr **table); diff --git a/onyx b/onyx index 8f837e0e1b922cc10e8a170268a9541a09eda703..413bb28fcef15e2533296e2a29fd93f2a3e4c51d 100755 GIT binary patch delta 2751 zcmZWrZERCj7(VCRz=lJnL zuo)nU2E*zx87eWFj35dLW{}J;{viwlf7Bl&U=#u*$_)GwqQQ9HbKZNGVt=%K&v~Ec zecq3A?wy`t(=+VkKK8_u7Ym~k=fD2$*Mahuop0WIel&IV#MB{{4APgT{thi`h#W8) zDIveCBI*;A|KURqPm~kl&khrMz<|H3=+vy7FE>6k_OI4HWPW+fAcW68BA3U+wgeB2 z85`w_Q9M~N&w%rou}l&g#p8tlQ0*}Qz=}2ZUuKu| zGIq;=M)9+P)i0IMe&bO|%8Ci=K9~bWt1@GOT&ADUR~4ESH(Enwa(5WbjzE^s5j3L2 zzPvzg#sMl?lGU5yN&_oKwC*@MHfsfOR4|PSwxI$?E9gQ639X=8e3|4lA%0AnG$QUN zc_C8D9w}vyJjC8w%Kl<0dmDmdI=^-_yNF!@C9PN9+k?7ABdVR^(Dp@z`ce(`r5frV z(hw}I@ha4SHC~P2j+#-ZakKGN1CE3}1jE49O#M->7hi`T5lB_8;l|Ml=v>Tq5BJ&- z2i@@_YmUgtf;qDD(4;D{BgN(SfmHS4<#R5zYoPfL#5bwx_ygw1+$FE>-U9|x$BG@M znitoMnv+l=*W9R^_b=;LSVsnZL#mlyeuNQHI|HHbh?VK;O?OJ!@07B;CbGLGvfuUC z?fq~du8EJ*eA6`sk-TZUhK$Wx(RIWm0;%Kxp*L8K&c+%CO}7vmBX%p;SHyx0_g!%{ zYKp6KVTYki=fs8#51wK+g?LsHnJVy3B#mjBT?zpA(GP$hMbjbnZv{wo zn86MEEfPNG5iWVmB^*XV$86UCJst`3ZFPltGVNpX_|O5xxBGv58INzkvUu;#^jv{Zp2 z;%;^c4U4iJyb#9N5zP}uo+jPiFuN(s1#_(X8&>^Q56u%WKw)-S62tROm;M>-f5J*b zC)XldOinG#ul*K?3#p;Vo6rbxbVpTps5JkOmx~&)kaq*A5es36Ci7zm5kdvis9+^- zJA}tzzfLUg>${cBHPCsD?L${pi`CXgu--a zOeJC>mVjnIJ~whBP?rjEzK{DV+^8B;ftUob$3WUVu^`7A=6P|Hn0e?FwF01}48!IK z{}k-oBA(-ox2e7=V&?Bq(A)F{b)R%tcR|c7)z6f)r5OLDa2LTn#q;3ZDW+xEP6}@- z@Emf~BAQYCUeHD1Vo?|Y*>4u*dH&R9m&u=UQR5(g>EW^}`8p^4H@H;9?gkO-mH#;UuT?1U52OEj z>E8{iWw9tEwN3%@2&nM@y$D$61>n8VwMOONi2m+-f_%S3|Hi52{!hy3+Nm3_4H@+M KRDAU1y8i%JJ@hvK delta 2756 zcmZWrZ){Ul6uvl_1$Ffr#YoIZAc#T&nIp@y!+n7B%7FI=U!)z&dfdIJy7*mAbj$@rE9L%FW<1TYvcG)mI%@v;}2FW2}KWS z4U~|nRYZP*;y--ou@B1$@n(hzJ*2^3R;7{(Te8^#svW9wIxDOE1oI%Kx)4R1XgS${@3P-%NhQ8+*8OPX#zw1N_*a1|&G2z+VAw95SRQc{eU_?3SKnD}(U^_anm4g^Mh${zO{Cq;EJNeawK_mQr zLN7#0)gz_qk%!dRm#S|pRc}UeOzp1)!=1#cgp$@t^zNW)(THp(Ke~HCp{~?JU8#q< zhdeARt#J@NV2wjaZm-=3HEz_t3gJjtLof^;Ia7ZwSBo#g5BDV(uJ&lBDxq_+nt$-x z7UV&9mZEBwh{=LEvU1R*D&CjW#rKhc4u;$IETpW$C8JzX=*7JC=Es(UjGrj8Zc z4LL7P*k+u73OQk`YTg4jAi1_k`m%5{r~D)%#6JnC@A8!?&*rUT@koeRZ>Cp>$_WVLwX^Gj7n7DZf z1YTibb#jPgAZ1;E)nR6d)qhPjnO*8f9EjfvAwwn}M$wp(8Ic4ykG=!`UJPww-SEIx z_b@nNzd^yLUBN~CPVcJ1X>mu;tc2wM2T4ETeag`zjXDIs8@*j(u0G9rX)iY-Zz*YA~cQd$r5WDB1(PMDk&mZg8gMQ3ldwWu1jop&fNg11>!RnUCQ|7e!Zs5$*MSI$cYo{Rj@{RMOF_{H;*(!5!7b- zz>9`yvqV1*@onCf)f;Y8bza1bJ5bQubiF)O+Rb}l<`1eKEGbhe-l1?H!C|H60Nu$a zMA}XYuPg8{vgIO%ZR+J9M&Wdk91gqR!pn2|<69ghZ_*ZP^ng@I5&bhr+svc6nnE*u zORi?Uws=@Nk?l>)1}S2lhW&4#aN&d*BSoxkFtJYJM-jh9 zvH<@i;@1g$H@FtXqOhq3Nys6g)+O{Jp}|d{_d?g!N_+$2otFjil8N}W -- 2.25.1