aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cachegrind/cg_main.c8
-rw-r--r--include/pub_tool_libcproc.h4
-rw-r--r--massif/ms_main.c12
3 files changed, 15 insertions, 9 deletions
diff --git a/cachegrind/cg_main.c b/cachegrind/cg_main.c
index 989705627..084bd9d72 100644
--- a/cachegrind/cg_main.c
+++ b/cachegrind/cg_main.c
@@ -896,10 +896,10 @@ static void fprint_CC_table_and_calc_totals(void)
VG_(strcpy)(buf, "cmd:");
VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
for (i = 0; i < VG_(client_argc); i++) {
- if (VG_(client_argv)[i] == NULL)
- continue;
- VG_(write)(fd, " ", 1);
- VG_(write)(fd, VG_(client_argv)[i], VG_(strlen)(VG_(client_argv)[i]));
+ if (VG_(client_argv)[i]) {
+ VG_(write)(fd, " ", 1);
+ VG_(write)(fd, VG_(client_argv)[i], VG_(strlen)(VG_(client_argv)[i]));
+ }
}
// "events:" line
VG_(sprintf)(buf, "\nevents: Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw\n");
diff --git a/include/pub_tool_libcproc.h b/include/pub_tool_libcproc.h
index e8588f525..b4e008010 100644
--- a/include/pub_tool_libcproc.h
+++ b/include/pub_tool_libcproc.h
@@ -35,7 +35,9 @@
Command-line and environment stuff
------------------------------------------------------------------ */
-/* Client args and environment (which can be inspected with VG_(getenv)(). */
+/* Client args and environment. Note that VG_(client_argv)[] can be written
+ to by the client, so you should check each entry is non-NULL before
+ printing. VG_(client_envp) can be inspected with VG_(getenv)(). */
extern Int VG_(client_argc);
extern Char** VG_(client_argv);
extern Char** VG_(client_envp);
diff --git a/massif/ms_main.c b/massif/ms_main.c
index d4d2b6b3b..9a2ae7e0b 100644
--- a/massif/ms_main.c
+++ b/massif/ms_main.c
@@ -1341,8 +1341,10 @@ static void write_hp_file(void)
// File header, including command line
SPRINTF(buf, "JOB \"");
- for (i = 0; i < VG_(client_argc); i++)
- SPRINTF(buf, "%s ", VG_(client_argv)[i]);
+ for (i = 0; i < VG_(client_argc); i++) {
+ if (VG_(client_argv)[i])
+ SPRINTF(buf, "%s ", VG_(client_argv)[i]);
+ }
SPRINTF(buf, /*" (%d ms/sample)\"\n"*/ "\"\n"
"DATE \"\"\n"
"SAMPLE_UNIT \"ms\"\n"
@@ -1664,8 +1666,10 @@ write_text_file(ULong total_ST, ULong heap_ST)
// Command line
SPRINTF(buf, "Command: ");
- for (i = 0; i < VG_(client_argc); i++)
- SPRINTF(buf, "%s ", VG_(client_argv)[i]);
+ for (i = 0; i < VG_(client_argc); i++) {
+ if (VG_(client_argv)[i])
+ SPRINTF(buf, "%s ", VG_(client_argv)[i]);
+ }
SPRINTF(buf, "\n%s\n", maybe_p);
if (clo_heap)