#include <string.h>
-#include "main/macros.h"
#include "blob.h"
+#include "u_math.h"
#ifdef HAVE_VALGRIND
#include <valgrind.h>
static bool
align_blob(struct blob *blob, size_t alignment)
{
- const size_t new_size = ALIGN(blob->size, alignment);
+ const size_t new_size = align64(blob->size, alignment);
if (blob->size < new_size) {
if (!grow_to_fit(blob, new_size - blob->size))
static void
align_blob_reader(struct blob_reader *blob, size_t alignment)
{
- blob->current = blob->data + ALIGN(blob->current - blob->data, alignment);
+ blob->current = blob->data + align64(blob->current - blob->data, alignment);
}
void
VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write));
- if (blob->data)
+ if (blob->data && to_write > 0)
memcpy(blob->data + blob->size, bytes, to_write);
blob->size += to_write;
BLOB_WRITE_TYPE(blob_write_intptr, intptr_t)
#define ASSERT_ALIGNED(_offset, _align) \
- assert(ALIGN((_offset), (_align)) == (_offset))
+ assert(align64((_offset), (_align)) == (_offset))
+
+bool
+blob_overwrite_uint8 (struct blob *blob,
+ size_t offset,
+ uint8_t value)
+{
+ ASSERT_ALIGNED(offset, sizeof(value));
+ return blob_overwrite_bytes(blob, offset, &value, sizeof(value));
+}
bool
blob_overwrite_uint32 (struct blob *blob,
const void *bytes;
bytes = blob_read_bytes(blob, size);
- if (bytes == NULL)
+ if (bytes == NULL || size == 0)
return;
memcpy(dest, bytes, size);