diff options
Diffstat (limited to 'Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c')
-rw-r--r-- | Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c b/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c index 369a59bfba8..05d9a2a005d 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c @@ -33,7 +33,7 @@ * Kristian Høgsberg <krh@redhat.com> */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-output-stream-private.h" @@ -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); |