summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/ChangeLog5
-rw-r--r--runtime/vsprintf.c18
2 files changed, 22 insertions, 1 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index e093850b..e81373f8 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-25 Martin Hunt <hunt@redhat.com>
+
+ * vsprintf.c (_stp_vsnprintf): Change %p to work like
+ libc and automatically insert "0x" before the pointer.
+
2006-05-24 Josh Stone <joshua.i.stone@intel.com>
PR 2677
diff --git a/runtime/vsprintf.c b/runtime/vsprintf.c
index ba0bc85a..7abb5dc5 100644
--- a/runtime/vsprintf.c
+++ b/runtime/vsprintf.c
@@ -295,10 +295,26 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
break;
case 'p':
+ len = 2*sizeof(void *) + 2;
if (field_width == -1) {
- field_width = 2*sizeof(void *);
+ field_width = len;
flags |= STP_ZEROPAD;
}
+ if (!(flags & STP_LEFT)) {
+ while (len < field_width--) {
+ if (str <= end)
+ *str = ' ';
+ ++str;
+ }
+ }
+ if (str <= end) {
+ *str++ = '0';
+ field_width--;
+ }
+ if (str <= end) {
+ *str++ = 'x';
+ field_width--;
+ }
str = number(str, end,
(unsigned long) va_arg(args, int64_t),
16, field_width, precision, flags);