Christian Costa : d3dxof: Move list type and list nb elements into the parse context.
Alexandre Julliard
julliard at winehq.org
Mon Jun 3 16:06:32 CDT 2013
Module: wine
Branch: master
Commit: 7325b798b45c3ab1b9a984e87b4d82169fa43e17
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7325b798b45c3ab1b9a984e87b4d82169fa43e17
Author: Christian Costa <titan.costa at gmail.com>
Date: Thu May 30 23:05:39 2013 +0200
d3dxof: Move list type and list nb elements into the parse context.
---
dlls/d3dxof/d3dxof.c | 3 +--
dlls/d3dxof/d3dxof_private.h | 2 ++
dlls/d3dxof/parsing.c | 23 ++++++++++-------------
3 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/dlls/d3dxof/d3dxof.c b/dlls/d3dxof/d3dxof.c
index 7090141..c0bea3c 100644
--- a/dlls/d3dxof/d3dxof.c
+++ b/dlls/d3dxof/d3dxof.c
@@ -291,10 +291,9 @@ static HRESULT WINAPI IDirectXFileImpl_RegisterTemplates(IDirectXFile* iface, LP
HRESULT hr;
LPBYTE decomp_buffer = NULL;
+ ZeroMemory(&buf, sizeof(buf));
buf.buffer = pvData;
buf.rem_bytes = cbSize;
- buf.txt = FALSE;
- buf.token_present = FALSE;
buf.pdxf = This;
TRACE("(%p/%p)->(%p,%d)\n", This, iface, pvData, cbSize);
diff --git a/dlls/d3dxof/d3dxof_private.h b/dlls/d3dxof/d3dxof_private.h
index 5bd3c71..7812fff 100644
--- a/dlls/d3dxof/d3dxof_private.h
+++ b/dlls/d3dxof/d3dxof_private.h
@@ -125,6 +125,8 @@ typedef struct {
WORD current_token;
BOOL token_present;
BOOL txt;
+ DWORD list_nb_elements;
+ BOOL list_type_float;
ULONG cur_pos_data;
LPBYTE cur_pstrings;
BYTE value[100];
diff --git a/dlls/d3dxof/parsing.c b/dlls/d3dxof/parsing.c
index 3ad9fa7..9335fdc 100644
--- a/dlls/d3dxof/parsing.c
+++ b/dlls/d3dxof/parsing.c
@@ -717,10 +717,7 @@ static WORD parse_TOKEN(parse_buffer * buf)
}
else
{
- static int nb_elem;
- static int is_float;
-
- if (!nb_elem)
+ if (!buf->list_nb_elements)
{
if (!read_bytes(buf, &token, 2))
return TOKEN_NONE;
@@ -728,26 +725,26 @@ static WORD parse_TOKEN(parse_buffer * buf)
/* Convert integer and float list into separate elements */
if (token == TOKEN_INTEGER_LIST)
{
- if (!read_bytes(buf, &nb_elem, 4))
+ if (!read_bytes(buf, &buf->list_nb_elements, 4))
return TOKEN_ERROR;
token = TOKEN_INTEGER;
- is_float = FALSE;
- TRACE("Integer list (TOKEN_INTEGER_LIST) of size %d\n", nb_elem);
+ buf->list_type_float = FALSE;
+ TRACE("Integer list (TOKEN_INTEGER_LIST) of size %d\n", buf->list_nb_elements);
}
else if (token == TOKEN_FLOAT_LIST)
{
- if (!read_bytes(buf, &nb_elem, 4))
+ if (!read_bytes(buf, &buf->list_nb_elements, 4))
return TOKEN_ERROR;
token = TOKEN_FLOAT;
- is_float = TRUE;
- TRACE("Float list (TOKEN_FLOAT_LIST) of size %d\n", nb_elem);
+ buf->list_type_float = TRUE;
+ TRACE("Float list (TOKEN_FLOAT_LIST) of size %d\n", buf->list_nb_elements);
}
}
- if (nb_elem)
+ if (buf->list_nb_elements)
{
- token = is_float ? TOKEN_FLOAT : TOKEN_INTEGER;
- nb_elem--;
+ token = buf->list_type_float ? TOKEN_FLOAT : TOKEN_INTEGER;
+ buf->list_nb_elements--;
{
DWORD integer;
More information about the wine-cvs
mailing list