p = "(NULL)";
}
- if (slen == -1) {
- /* NULL terminated string */
- slen = strlen (p);
- }
-
- if (G_UNLIKELY (width != 0)) {
- slen = MIN (slen, width);
- }
-
if (G_UNLIKELY (b32)) {
gchar *b32buf;
+ if (G_UNLIKELY (slen == -1)) {
+ if (G_LIKELY (width != 0)) {
+ slen = width;
+ }
+ else {
+ /* NULL terminated string */
+ slen = strlen (p);
+ }
+ }
+
b32buf = rspamd_encode_base32 (p, slen);
if (b32buf) {
RSPAMD_PRINTF_APPEND (b32buf, strlen (b32buf));
g_free (b32buf);
}
+ else {
+ RSPAMD_PRINTF_APPEND ("(NULL)", sizeof ("(NULL)") - 1);
+ }
}
else if (G_UNLIKELY (hex)) {
gchar hexbuf[2];
+ if (G_UNLIKELY (slen == -1)) {
+ if (G_LIKELY (width != 0)) {
+ slen = width;
+ }
+ else {
+ /* NULL terminated string */
+ slen = strlen (p);
+ }
+ }
+
while (slen) {
hexbuf[0] = hex == 2 ? _HEX[(*p >> 4) & 0xf] :
_hex[(*p >> 4) & 0xf];
p++;
slen--;
}
+
fmt++;
buf_start = fmt;
}
else {
+ if (slen == -1) {
+ /* NULL terminated string */
+ slen = strlen (p);
+ }
+
+ if (G_UNLIKELY (width != 0)) {
+ slen = MIN (slen, width);
+ }
+
RSPAMD_PRINTF_APPEND (p, slen);
}
-
continue;
case 'O':