Show "nil" also for void* values
diff --git a/lens_default.c b/lens_default.c
index 84b74ea..f0bd616 100644
--- a/lens_default.c
+++ b/lens_default.c
@@ -1,6 +1,6 @@
/*
* This file is part of ltrace.
- * Copyright (C) 2011,2012 Petr Machata, Red Hat Inc.
+ * Copyright (C) 2011,2012,2013 Petr Machata, Red Hat Inc.
* Copyright (C) 1998,2004,2007,2008,2009 Juan Cespedes
* Copyright (C) 2006 Ian Wienand
* Copyright (C) 2006 Steve Fink
@@ -256,11 +256,12 @@
return written;
}
+static const char null_message[] = "nil";
int
format_pointer(FILE *stream, struct value *value, struct value_dict *arguments)
{
if (value_is_zero(value, arguments))
- return fprintf(stream, "nil");
+ return fprintf(stream, null_message);
/* The following is for detecting recursion. We keep track of
* the values that were already displayed. Each time a
@@ -417,6 +418,8 @@
return format_struct(stream, value, arguments);
case ARGTYPE_POINTER:
+ if (value_is_zero(value, arguments))
+ return fprintf(stream, null_message);
if (value->type->u.array_info.elt_type->type != ARGTYPE_VOID)
return format_pointer(stream, value, arguments);
return format_integer(stream, value, INT_FMT_x, arguments);
diff --git a/testsuite/ltrace.main/parameters2.exp b/testsuite/ltrace.main/parameters2.exp
index a563d31..6318fc5 100644
--- a/testsuite/ltrace.main/parameters2.exp
+++ b/testsuite/ltrace.main/parameters2.exp
@@ -245,4 +245,18 @@
get_string();
}] {get_string\(\) *= "FOO"} == 1
+# Test that void* NULL's are displayed as "nil" as well.
+
+ltraceMatch1 [ltraceLibTest {
+ addr somefunc();
+} {
+ void *somefunc(void);
+} {
+ void *somefunc(void) {
+ return 0;
+ }
+} {
+ somefunc();
+}] {somefunc\(\) *= nil} == 1
+
ltraceDone