From c117419137e54f6dee041ab1eba3963ff4b80915 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 21 Dec 2008 17:59:47 -0500 Subject: [PATCH] Offsets into CTAB need to start immediately _after_ the ID field. --- mojoshader_assembler.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mojoshader_assembler.c b/mojoshader_assembler.c index 02ab0186..f74a54c4 100644 --- a/mojoshader_assembler.c +++ b/mojoshader_assembler.c @@ -1693,15 +1693,15 @@ static uint32 add_ctab_bytes(Context *ctx, const uint8 *bytes, const size_t len) { void *ptr = ctx->ctab + extra; if (len == 0) - return ( (uint32) (((uint8 *) ptr) - ctx->ctab) ); + return ( (uint32) (((uint8 *) ptr) - ctx->ctab) ) - sizeof (uint32); else if ((len == 1) && ((ptr = memchr(ptr, bytes[0], ctx->ctab_len - len)) != NULL)) - return ( (uint32) (((uint8 *) ptr) - ctx->ctab) ); + return ( (uint32) (((uint8 *) ptr) - ctx->ctab) ) - sizeof (uint32); else // search for the string of bytes... { while ((ptr = memchr(ptr, bytes[0], ctx->ctab_len - len)) != NULL) { if (memcmp(ptr, bytes, len) == 0) // this is it? - return ( (uint32) (((uint8 *) ptr) - ctx->ctab) ); + return ( (uint32) (((uint8 *) ptr) - ctx->ctab) ) - sizeof (uint32); ptr++; } // while } // else @@ -1727,7 +1727,7 @@ static uint32 add_ctab_bytes(Context *ctx, const uint8 *bytes, const size_t len) ctx->ctab = (uint8 *) ptr; } // if - const uint32 retval = ctx->ctab_len; + const uint32 retval = ctx->ctab_len - sizeof (uint32); memcpy(ctx->ctab + ctx->ctab_len, bytes, len); ctx->ctab_len += len; return retval;