Fix stringshare on 64bits platforms.
authorbarbieri <barbieri>
Wed, 29 Oct 2008 14:18:29 +0000 (14:18 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Oct 2008 14:18:29 +0000 (14:18 +0000)
sizeof(Eina_Stringshare_Node) is now 24 bytes on 64bits platforms, but
str[] was pointing to before that, to the 20th byte, causing out of
bounds access.

Adding the padding will cause str[] to use the correct position. It
wastes 4 more bytes, like pre-optimizations, but it's just on big
machines.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@37305 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_stringshare.c

index c0980eb..4646cb8 100644 (file)
@@ -123,6 +123,11 @@ struct _Eina_Stringshare_Node
 
    unsigned short         length;
    unsigned short         references;
+
+#if __WORDSIZE == 64
+   unsigned int           __padding;
+#endif
+
    char                   str[];
 };