summaryrefslogtreecommitdiff
path: root/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c
diff options
context:
space:
mode:
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.c12
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);