fusion: Explicitly check for -1 for a missing table

James Hawkins truiken at gmail.com
Wed Apr 16 12:08:05 CDT 2008


On Wed, Apr 16, 2008 at 11:51 AM, Marcus Meissner <meissner at suse.de> wrote:
>
> On Wed, Apr 16, 2008 at 11:48:31AM -0500, James Hawkins wrote:
>  > Hi,
>  >
>  > Changelog:
>  > * Explicitly check for -1 for a missing table.
>  >
>  >  dlls/fusion/assembly.c |    4 ++--
>  >  1 files changed, 2 insertions(+), 2 deletions(-)
>  >
>  > --
>  > James Hawkins
>
>  > diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c
>  > index 024e611..eee889a 100644
>  > --- a/dlls/fusion/assembly.c
>  > +++ b/dlls/fusion/assembly.c
>  > @@ -416,7 +416,7 @@ HRESULT assembly_get_name(ASSEMBLY *assembly, LPSTR *name)
>  >      ULONG offset;
>  >
>  >      offset = assembly->tables[0x20].offset; /* FIXME: add constants */
>  > -    if (offset < 0)
>  > +    if (offset == -1)
>  >          return E_FAIL;
>  >
>  >      asmtbl = (ASSEMBLYTABLE *)assembly_data_offset(assembly, offset);
>  > @@ -527,7 +527,7 @@ HRESULT assembly_get_pubkey_token(ASSEMBLY *assembly, LPSTR *token)
>  >      *token = NULL;
>  >
>  >      offset = assembly->tables[0x20].offset; /* FIXME: add constants */
>  > -    if (offset < 0)
>  > +    if (offset == -1)
>  >          return E_FAIL;
>
>  You should make offset "signed", or pass errors down in another way.
>  This will not work this way.
>

It works just fine.  -1 is 4294967295 in ULONG (32bit), which is
exactly the same as offset on error (because we assigned it -1, but
the representation in memory is the same).  We do this several other
places in the code base.

-- 
James Hawkins



More information about the wine-devel mailing list