summaryrefslogtreecommitdiff
path: root/src/cairo-output-stream.c
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2017-10-13 19:27:03 +1030
committerAdrian Johnson <ajohnson@redneon.com>2017-10-13 19:33:30 +1030
commit202a9ed64e3d164307defddb41a9f8cf9e9b751b (patch)
tree09abf0d9c125bc81584bd3b6240a9d45793e7ef9 /src/cairo-output-stream.c
parentd5b634da61597aa8e80ba7d5bc39f092e5888515 (diff)
downloadcairo-202a9ed64e3d164307defddb41a9f8cf9e9b751b.tar.gz
output-stream: allow %s strings larger than 512 chars
https://bugs.freedesktop.org/show_bug.cgi?id=103249
Diffstat (limited to 'src/cairo-output-stream.c')
-rw-r--r--src/cairo-output-stream.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/cairo-output-stream.c b/src/cairo-output-stream.c
index 76d718aa7..f43f212ed 100644
--- a/src/cairo-output-stream.c
+++ b/src/cairo-output-stream.c
@@ -490,9 +490,13 @@ _cairo_output_stream_vprintf (cairo_output_stream_t *stream,
single_fmt, va_arg (ap, long int));
}
break;
- case 's':
- snprintf (buffer, sizeof buffer,
- single_fmt, va_arg (ap, const char *));
+ case 's': {
+ /* Write out strings as they may be larger than the buffer. */
+ const char *s = va_arg (ap, const char *);
+ int len = strlen(s);
+ _cairo_output_stream_write (stream, s, len);
+ buffer[0] = 0;
+ }
break;
case 'f':
_cairo_dtostr (buffer, sizeof buffer, va_arg (ap, double), FALSE);