X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fblob.c;h=c89092e1cf3a98b0c2f9b9222cd23fd73e13d8df;hb=577c8d72882a909ae7d2c90d7c8250c77475f9a4;hp=f0fa85e5bebd07f04f203ca2af3ba0021fdd2190;hpb=6a41a52e625537d1072c4f605fb1ed651ac0b99d;p=mesa.git diff --git a/src/compiler/blob.c b/src/compiler/blob.c index f0fa85e5beb..c89092e1cf3 100644 --- a/src/compiler/blob.c +++ b/src/compiler/blob.c @@ -158,10 +158,10 @@ blob_write_bytes(struct blob *blob, const void *bytes, size_t to_write) return true; } -ssize_t +intptr_t blob_reserve_bytes(struct blob *blob, size_t to_write) { - ssize_t ret; + intptr_t ret; if (! grow_to_fit (blob, to_write)) return -1; @@ -172,14 +172,14 @@ blob_reserve_bytes(struct blob *blob, size_t to_write) return ret; } -ssize_t +intptr_t blob_reserve_uint32(struct blob *blob) { align_blob(blob, sizeof(uint32_t)); return blob_reserve_bytes(blob, sizeof(uint32_t)); } -ssize_t +intptr_t blob_reserve_intptr(struct blob *blob) { align_blob(blob, sizeof(intptr_t)); @@ -256,7 +256,7 @@ ensure_can_read(struct blob_reader *blob, size_t size) if (blob->overrun) return false; - if (blob->current < blob->end && blob->end - blob->current >= size) + if (blob->current <= blob->end && blob->end - blob->current >= size) return true; blob->overrun = true; @@ -291,6 +291,13 @@ blob_copy_bytes(struct blob_reader *blob, void *dest, size_t size) memcpy(dest, bytes, size); } +void +blob_skip_bytes(struct blob_reader *blob, size_t size) +{ + if (ensure_can_read (blob, size)) + blob->current += size; +} + /* These next three read functions have identical form. If we add any beyond * these first three we should probably switch to generating these with a * preprocessor macro.