summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/Makefile.am1
-rw-r--r--src/compiler/glsl/blob.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/src/compiler/Makefile.am b/src/compiler/Makefile.am
index d52da91dab8..4c83365094b 100644
--- a/src/compiler/Makefile.am
+++ b/src/compiler/Makefile.am
@@ -36,6 +36,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/src/gallium/include \
-I$(top_srcdir)/src/gallium/auxiliary \
-I$(top_srcdir)/src/gtest/include \
+ $(VALGRIND_CFLAGS) \
$(DEFINES)
AM_CFLAGS = \
diff --git a/src/compiler/glsl/blob.c b/src/compiler/glsl/blob.c
index db362520650..3c4aed8524d 100644
--- a/src/compiler/glsl/blob.c
+++ b/src/compiler/glsl/blob.c
@@ -26,6 +26,14 @@
#include "main/macros.h"
#include "blob.h"
+#ifdef HAVE_VALGRIND
+#include <valgrind.h>
+#include <memcheck.h>
+#define VG(x) x
+#else
+#define VG(x)
+#endif
+
#define BLOB_INITIAL_SIZE 4096
/* Ensure that \blob will be able to fit an additional object of size
@@ -110,6 +118,8 @@ blob_overwrite_bytes(struct blob *blob,
if (blob->size < offset + to_write)
return false;
+ VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write));
+
memcpy(blob->data + offset, bytes, to_write);
return true;
@@ -121,6 +131,8 @@ blob_write_bytes(struct blob *blob, const void *bytes, size_t to_write)
if (! grow_to_fit(blob, to_write))
return false;
+ VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write));
+
memcpy(blob->data + blob->size, bytes, to_write);
blob->size += to_write;