[PATCH] Zero-fill holes in the buffer rather than leaving memory uninitialized.
Jeremy Huddleston
jeremyhu at apple.com
Tue Oct 11 10:18:24 PDT 2011
You are missing this in src/SMlibint.h:
#include <string.h>
string.h includes the prototype for memset().
Also, please add a Signed-off-by: line to your commit message along with my:
Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
Once the above are fixed, please resend to the list, and I'll push it in.
Thanks.
On Oct 9, 2011, at 10:15, L. David Baron wrote:
> Make STORE_ARRAY8 and STORE_LISTOF_PROPERTY fill holes in the buffer
> with zero bytes rather than leaving whatever was in that memory the
> previous cycle through the scratch buffer. (Prior to the scratch buffer
> being zero-filled when allocated, which was done to fix
> https://bugs.freedesktop.org/show_bug.cgi?id=17644 , this problem led to
> valgrind warnings. I believe this fix is a better way to fix those
> warnings.)
>
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=25785
>
> (I admit to editing the STORE_ARRAY8 changes to merge with upstream
> since I last tested the patch.)
> ---
> src/SMlibint.h | 17 +++++++++++++----
> 1 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/src/SMlibint.h b/src/SMlibint.h
> index a478b48..e3ac3e4 100644
> --- a/src/SMlibint.h
> +++ b/src/SMlibint.h
> @@ -201,25 +201,34 @@ in this Software without prior written authorization from The Open Group.
> * STORE FOO
> */
>
> +#define STORE_ZERO_PADDING(_pBuf, _len) \
> +{ \
> + memset (_pBuf, 0, _len); \
> + _pBuf += _len; \
> +}
> +
> #define STORE_ARRAY8(_pBuf, _len, _array8) \
> { \
> STORE_CARD32 (_pBuf, _len); \
> - if (_len) \
> + if (_len) { \
> memcpy (_pBuf, _array8, _len); \
> - _pBuf += _len + PAD64 (4 + _len); \
> + _pBuf += _len; \
> + } \
> + if (PAD64 (4 + _len)) \
> + STORE_ZERO_PADDING (_pBuf, PAD64 (4 + _len)); \
> }
>
> #define STORE_LISTOF_PROPERTY(_pBuf, _count, _props) \
> { \
> int _i, _j; \
> STORE_CARD32 (_pBuf, _count); \
> - _pBuf += 4; \
> + STORE_ZERO_PADDING (_pBuf, 4); \
> for (_i = 0; _i < _count; _i++) \
> { \
> STORE_ARRAY8 (_pBuf, strlen (_props[_i]->name), _props[_i]->name); \
> STORE_ARRAY8 (_pBuf, strlen (_props[_i]->type), _props[_i]->type); \
> STORE_CARD32 (_pBuf, _props[_i]->num_vals); \
> - _pBuf += 4; \
> + STORE_ZERO_PADDING (_pBuf, 4); \
> for (_j = 0; _j < _props[_i]->num_vals; _j++) \
> { \
> STORE_ARRAY8 (_pBuf, _props[_i]->vals[_j].length, \
> --
> 1.7.4.1
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list