diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-02-18 16:28:26 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-18 16:28:26 +0400 |
| commit | 9ddf3c57805f0bb76a26cb31ba33e64c04d2133c (patch) | |
| tree | 15b04b41c0ebbbc4d94ae96e1929410f657817e1 /main/spprintf.c | |
| parent | 5de7115679522dec2f4725104c6f8c6e4a7bd8e4 (diff) | |
| parent | 43b03c74b322d6ceb003a14a7561fdffc4e13072 (diff) | |
| download | php-git-9ddf3c57805f0bb76a26cb31ba33e64c04d2133c.tar.gz | |
Merge branch 'refactoring2' of github.com:zend-dev/php into refactoring2
Diffstat (limited to 'main/spprintf.c')
| -rw-r--r-- | main/spprintf.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/main/spprintf.c b/main/spprintf.c index 5b16d51441..dfee6d9612 100644 --- a/main/spprintf.c +++ b/main/spprintf.c @@ -145,13 +145,13 @@ * Macro that does padding. The padding is done by printing * the character ch. */ -#define PAD(xbuf, count, ch) do { \ - if ((count) > 0) { \ - size_t newlen; \ - smart_str_alloc(xbuf, (count), 0); \ - memset(xbuf->c + xbuf->len, ch, (count)); \ - xbuf->len += (count); \ - } \ +#define PAD(xbuf, count, ch) do { \ + if ((count) > 0) { \ + size_t newlen; \ + smart_str_alloc(xbuf, (count), 0); \ + memset(xbuf->s->val + xbuf->s->len, ch, (count)); \ + xbuf->s->len += (count); \ + } \ } while (0) #define NUM(c) (c - '0') @@ -700,7 +700,7 @@ static void xbuf_format_converter(smart_str *xbuf, const char *fmt, va_list ap) case 'n': - *(va_arg(ap, int *)) = xbuf->len; + *(va_arg(ap, int *)) = xbuf->s->len; goto skip_output; /* @@ -795,17 +795,20 @@ skip_output: PHPAPI int vspprintf(char **pbuf, size_t max_len, const char *format, va_list ap) /* {{{ */ { smart_str xbuf = {0}; + int result; xbuf_format_converter(&xbuf, format, ap); - if (max_len && xbuf.len > max_len) { - xbuf.len = max_len; + if (max_len && xbuf.s->len > max_len) { + xbuf.s->len = max_len; } smart_str_0(&xbuf); - *pbuf = xbuf.c; + *pbuf = estrndup(xbuf.s->val, xbuf.s->len); + result = xbuf.s->len; + smart_str_free(&xbuf); - return xbuf.len; + return result; } /* }}} */ |
