Download raw body.
btrace: Fix '%c' format string specifier
Hi,
the '%c' format string specifier handles integer literals, not strings.
So long,
- Christian
---
regress/usr.sbin/btrace/Makefile | 4 ++--
regress/usr.sbin/btrace/multismts.bt | 2 +-
regress/usr.sbin/btrace/printf.bt | 4 ++++
regress/usr.sbin/btrace/printf.ok | 1 +
usr.sbin/btrace/printf.c | 2 +-
5 files changed, 9 insertions(+), 4 deletions(-)
create mode 100644 regress/usr.sbin/btrace/printf.bt
create mode 100644 regress/usr.sbin/btrace/printf.ok
diff --git a/regress/usr.sbin/btrace/Makefile b/regress/usr.sbin/btrace/Makefile
index fb0a37bfc4e9..a7350fb94b72 100644
--- a/regress/usr.sbin/btrace/Makefile
+++ b/regress/usr.sbin/btrace/Makefile
@@ -8,8 +8,8 @@ BT_LANG_SCRIPTS= arithm beginend beginend-argn boolean comments \
delete exit histempty if \
map mapclear mapempty mapsyntax mapzero map-unnamed \
maxoperand min+max+sum multismts nsecs+var \
- precedence print read-map-after-clear staticv-empty \
- syntaxerror tuple tupleeval vareval
+ precedence print printf read-map-after-clear \
+ staticv-empty syntaxerror tuple tupleeval vareval
BT_ARG_LANG_SCRIPTS= staticv str
diff --git a/regress/usr.sbin/btrace/multismts.bt b/regress/usr.sbin/btrace/multismts.bt
index 74eaa4986763..67fbf7befa1b 100644
--- a/regress/usr.sbin/btrace/multismts.bt
+++ b/regress/usr.sbin/btrace/multismts.bt
@@ -1,5 +1,5 @@
// Test multiple statements inside a single block;
BEGIN {
printf("One"); printf(", %d", "2");
- printf(" %s three%c\n", "and", "!");
+ printf(" %s three!\n", "and");
}
diff --git a/regress/usr.sbin/btrace/printf.bt b/regress/usr.sbin/btrace/printf.bt
new file mode 100644
index 000000000000..f025d0bbc27a
--- /dev/null
+++ b/regress/usr.sbin/btrace/printf.bt
@@ -0,0 +1,4 @@
+BEGIN {
+ $c = 0x41; // 'A'
+ printf("%c%c%c\n", $c, 0x41, 65);
+}
diff --git a/regress/usr.sbin/btrace/printf.ok b/regress/usr.sbin/btrace/printf.ok
new file mode 100644
index 000000000000..43d5a8ed6ef6
--- /dev/null
+++ b/regress/usr.sbin/btrace/printf.ok
@@ -0,0 +1 @@
+AAA
diff --git a/usr.sbin/btrace/printf.c b/usr.sbin/btrace/printf.c
index d7a9424dce61..3914b577b8fb 100644
--- a/usr.sbin/btrace/printf.c
+++ b/usr.sbin/btrace/printf.c
@@ -400,7 +400,7 @@ getchr(void)
if (gargv == NULL)
return((int)'\0');
- c = (int)*ba2str(gargv, gdevt);
+ c = ba2long(gargv, gdevt);
gargv = SLIST_NEXT(gargv, ba_next);
return c;
}
--
2.34.1
btrace: Fix '%c' format string specifier