projects
/
free-sw
/
xcb
/
libxcb
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6eee170
)
Bug #5958: zero out padding bytes in requests.
author
Jamey Sharp
<jamey@minilop.net>
Mon, 20 Nov 2006 01:56:32 +0000
(17:56 -0800)
committer
Jamey Sharp
<jamey@minilop.net>
Mon, 20 Nov 2006 01:56:32 +0000
(17:56 -0800)
src/c-client.xsl
patch
|
blob
|
history
diff --git
a/src/c-client.xsl
b/src/c-client.xsl
index
d5d2b35
..
0f7c025
100644
(file)
--- a/
src/c-client.xsl
+++ b/
src/c-client.xsl
@@
-47,6
+47,8
@@
authorization from the authors.
<xsl:variable name="h" select="$mode = 'header'" />
<xsl:variable name="c" select="$mode = 'source'" />
<xsl:variable name="h" select="$mode = 'header'" />
<xsl:variable name="c" select="$mode = 'source'" />
+
+ <xsl:variable name="need-string-h" select="//request/pad[@bytes != 1]" />
<!-- String used to indent lines of code. -->
<xsl:variable name="indent-string" select="' '" />
<!-- String used to indent lines of code. -->
<xsl:variable name="indent-string" select="' '" />
@@
-720,7
+722,7
@@
authorization from the authors.
<l><xsl:value-of select="@ref" /> xcb_out;</l>
<l />
<l><xsl:value-of select="@ref" /> xcb_out;</l>
<l />
- <xsl:apply-templates select="$struct//*[(self::field or self::exprfield)
+ <xsl:apply-templates select="$struct//*[(self::field or self::exprfield
or self::pad
)
and not(boolean(@no-assign))]"
mode="assign" />
and not(boolean(@no-assign))]"
mode="assign" />
@@
-779,6
+781,14
@@
authorization from the authors.
</l>
</xsl:template>
</l>
</xsl:template>
+ <xsl:template match="pad" mode="assign">
+ <xsl:variable name="padnum"><xsl:number /></xsl:variable>
+ <l><xsl:choose>
+ <xsl:when test="@bytes = 1">xcb_out.pad<xsl:value-of select="$padnum - 1" /> = 0;</xsl:when>
+ <xsl:otherwise>memset(xcb_out.pad<xsl:value-of select="$padnum - 1" />, 0, <xsl:value-of select="@bytes" />);</xsl:otherwise>
+ </xsl:choose></l>
+ </xsl:template>
+
<xsl:template match="iterator" mode="pass2">
<struct name="{@ref}_iterator_t">
<field type="{@ref}_t *" name="data" />
<xsl:template match="iterator" mode="pass2">
<struct name="{@ref}_iterator_t">
<field type="{@ref}_t *" name="data" />
@@
-1013,7
+1023,10
@@
authorization from the authors.
</xsl:choose>
</xsl:if>
</xsl:choose>
</xsl:if>
-<xsl:if test="$c"><xsl:text>
+<xsl:if test="$c">
+<xsl:if test="$need-string-h">
+#include <string.h></xsl:if>
+<xsl:text>
#include <assert.h>
#include "xcbext.h"
#include "</xsl:text><xsl:value-of select="$header" /><xsl:text>.h"
#include <assert.h>
#include "xcbext.h"
#include "</xsl:text><xsl:value-of select="$header" /><xsl:text>.h"