[PATCH v2 3/4] builtins/printf.def: fix type mismatch in tescape call
Shubham Chakraborty <[email protected]> Tue, 14 Jul 2026 16:01:46 +0530
| Newsgroups | gmane.comp.shells.bash.bugs |
|---|---|
| Message-ID | <[email protected]> |
When HANDLE_MULTIBYTE is disabled, the 'c' variable is an int, but
tescape expects a char * as its second argument. This causes a type
mismatch error.
This fixes the following failure seen with br-arm-basic toolchain:
./printf.def:1230:26: error: passing argument 2 of 'tescape' from incompatible pointer type [-Werror=incompatible-pointer-types]
1230 | s += tescape (s, &c, (int *)NULL, &temp);
| ^~
| |
| int *
./printf.def:1068:30: note: expected 'char *' but argument is of type 'int *'
1068 | tescape (char *estart, char *cp, int *lenp, int *sawc)
| ~~~~~~^~
Signed-off-by: Shubham Chakraborty <[email protected]>
---
builtins/printf.def | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/builtins/printf.def b/builtins/printf.def
index f7abf53d..7332736c 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -1227,7 +1227,11 @@ bexpand (char *string, size_t len, int *sawc, size_t *lenp)
memset (mbch, '\0', sizeof (mbch));
s += tescape (s, mbch, &mblen, &temp);
#else
- s += tescape (s, &c, (int *)NULL, &temp);
+ {
+ char cc;
+ s += tescape (s, &cc, (int *)NULL, &temp);
+ c = cc;
+ }
#endif
if (temp)
{
--
2.55.0