Re: com php-src: Reduced memory realocations: ext/date/php_date.c ext/standard/basic_functions.c ext/standard/browscap.c ext/standard/dns.c
ext/standard/dns_win32.c

From: Date: Wed, 07 May 2014 10:21:05 +0000
Subject: Re: com php-src: Reduced memory realocations: ext/date/php_date.c ext/standard/basic_functions.c ext/standard/browscap.c ext/standard/dns.c
ext/standard/dns_win32.c
References: 1 2  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-78175@lists.php.net to get a copy of this message
Sorry, I really have more wishes than I may do :) It would be great if you team would take care about Windows support, In case of serious troubles, of course, I'll invest some time. Thanks. Dmitry. On Wed, May 7, 2014 at 1:16 PM, Pierre Joye <pierre.php@gmail.com> wrote: > On Tue, Apr 15, 2014 at 8:43 PM, Dmitry Stogov <dmitry@php.net> wrote: > > Commit: 6cf5e51f3eab233d8694a9b1344eecc62ca0e1c0 > > Author: Dmitry Stogov <dmitry@zend.com> Tue, 15 Apr 2014 > 22:43:18 +0400 > > Parents: d0cc5c633c3eeaa61fe1108e74ba9c5941e580c0 > > Branches: phpng > > > > Link: > > http://git.php.net/?p=php-src.git;a=commitdiff;h=6cf5e51f3eab233d8694a9b1344eecc62ca0e1c0 > > > > Log: > > Reduced memory realocations > > > > Changed paths: > > M ext/date/php_date.c > > M ext/standard/basic_functions.c > > M ext/standard/browscap.c > > M ext/standard/dns.c > > M ext/standard/dns_win32.c > > > > > > Diff: > > diff --git a/ext/date/php_date.c b/ext/date/php_date.c > > index 8009897..68084a2 100644 > > --- a/ext/date/php_date.c > > +++ b/ext/date/php_date.c > > @@ -2204,17 +2204,15 @@ static HashTable > *date_object_get_properties(zval *object TSRMLS_DC) /* {{{ */ > > ZVAL_STRING(&zv, > dateobj->time->tz_info->name); > > break; > > case TIMELIB_ZONETYPE_OFFSET: { > > - char *tmpstr = > emalloc(sizeof("UTC+05:00")); > > + zend_string *tmpstr = > STR_ALLOC(sizeof("UTC+05:00")-1, 0); > > timelib_sll utc_offset = > dateobj->time->z; > > > > - snprintf(tmpstr, sizeof("+05:00"), > "%c%02d:%02d", > > + tmpstr->len = snprintf(tmpstr->val, > sizeof("+05:00"), "%c%02d:%02d", > > utc_offset > 0 ? '-' : '+', > > abs(utc_offset / 60), > > abs((utc_offset % 60))); > > > > - // TODO: avoid reallocation ??? > > - ZVAL_STRING(&zv, tmpstr); > > - efree(tmpstr); > > + ZVAL_STR(&zv, tmpstr); > > } > > break; > > case TIMELIB_ZONETYPE_ABBR: > > @@ -2299,16 +2297,14 @@ static HashTable > *date_object_get_properties_timezone(zval *object TSRMLS_DC) /* > > ZVAL_STRING(&zv, tzobj->tzi.tz->name); > > break; > > case TIMELIB_ZONETYPE_OFFSET: { > > - char *tmpstr = emalloc(sizeof("UTC+05:00")); > > + zend_string *tmpstr = > STR_ALLOC(sizeof("UTC+05:00")-1, 0); > > > > - snprintf(tmpstr, sizeof("+05:00"), > > "%c%02d:%02d", > > + tmpstr->len = snprintf(tmpstr->val, > sizeof("+05:00"), "%c%02d:%02d", > > tzobj->tzi.utc_offset > 0 ? '-' : '+', > > abs(tzobj->tzi.utc_offset / 60), > > abs((tzobj->tzi.utc_offset % 60))); > > > > - // TODO: avoid reallocation ??? > > - ZVAL_STRING(&zv, tmpstr); > > - efree(tmpstr); > > + ZVAL_STR(&zv, tmpstr); > > } > > break; > > case TIMELIB_ZONETYPE_ABBR: > > @@ -3736,18 +3732,15 @@ PHP_FUNCTION(timezone_name_get) > > RETURN_STRING(tzobj->tzi.tz->name); > > break; > > case TIMELIB_ZONETYPE_OFFSET: { > > - char *tmpstr = emalloc(sizeof("UTC+05:00")); > > + zend_string *tmpstr = > STR_ALLOC(sizeof("UTC+05:00")-1, 0); > > timelib_sll utc_offset = tzobj->tzi.utc_offset; > > > > - snprintf(tmpstr, sizeof("+05:00"), > > "%c%02d:%02d", > > + tmpstr->len = snprintf(tmpstr->val, > sizeof("+05:00"), "%c%02d:%02d", > > utc_offset > 0 ? '-' : '+', > > abs(utc_offset / 60), > > abs((utc_offset % 60))); > > > > - // TODO: avoid reallocation ??? > > - RETVAL_STRING(tmpstr); > > - efree(tmpstr); > > - return; > > + RETURN_STR(tmpstr); > > } > > break; > > case TIMELIB_ZONETYPE_ABBR: > > diff --git a/ext/standard/basic_functions.c > b/ext/standard/basic_functions.c > > index 0dc9874..9d68788 100644 > > --- a/ext/standard/basic_functions.c > > +++ b/ext/standard/basic_functions.c > > @@ -3806,7 +3806,6 @@ PHP_RSHUTDOWN_FUNCTION(basic) /* {{{ */ > > setlocale(LC_CTYPE, ""); > > zend_update_current_locale(); > > } > > -//??? STR_FREE(BG(locale_string)); > > if (BG(locale_string)) { > > efree(BG(locale_string)); > > BG(locale_string) = NULL; > > diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c > > index 08a01d5..ef49ee4 100644 > > --- a/ext/standard/browscap.c > > +++ b/ext/standard/browscap.c > > @@ -83,7 +83,6 @@ static void convert_browscap_pattern(zval *pattern, > int persistent) /* {{{ */ > > zend_string *res; > > char *lc_pattern; > > > > - // TODO: overflow check??? > > res = STR_SAFE_ALLOC(Z_STRLEN_P(pattern), 2, 4, persistent); > > t = res->val; > > > > diff --git a/ext/standard/dns.c b/ext/standard/dns.c > > index 2501a03..de0e24a 100644 > > --- a/ext/standard/dns.c > > +++ b/ext/standard/dns.c > > @@ -506,24 +506,24 @@ static u_char *php_parserr(u_char *cp, querybuf > *answer, int type_to_fetch, int > > { > > int ll = 0; > > zval entries; > > + zend_string *tp; > > > > add_assoc_string(subarray, "type", > "TXT"); > > - tp = emalloc(dlen + 1); > > + tp = STR_ALLOC(dlen, 0); > > > > array_init(&entries); > > > > while (ll < dlen) { > > n = cp[ll]; > > - memcpy(tp + ll , cp + ll + 1, n); > > + memcpy(tp->val + ll , cp + ll + > 1, n); > > add_next_index_stringl(&entries, > (char*)cp + ll + 1, n); > > ll = ll + n + 1; > > } > > - tp[dlen] = '\0'; > > + tp->val[dlen] = '\0'; > > + tp->len = dlen; > > cp += dlen; > > > > - // TODO: avoid reallocation ??? > > - add_assoc_stringl(subarray, "txt", > (char*)tp, (dlen>0)?dlen - 1:0); > > - efree(tp); > > + add_assoc_str(subarray, "txt", tp); > > add_assoc_zval(subarray, "entries", > &entries); > > } > > break; > > diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c > > index 5fd0da0..4deed0b 100644 > > --- a/ext/standard/dns_win32.c > > +++ b/ext/standard/dns_win32.c > > @@ -207,7 +207,8 @@ static void php_parserr(PDNS_RECORD pRec, int > type_to_fetch, int store, int raw, > > DWORD i = 0; > > DNS_TXT_DATA *data_txt = &pRec->Data.TXT; > > DWORD count = data_txt->dwStringCount; > > - char *txt, *txt_dst; > > + zend_string *txt; > > + char *txt_dst; > > long txt_len = 0; > > zval *entries; > > > > @@ -220,18 +221,16 @@ static void php_parserr(PDNS_RECORD pRec, int > type_to_fetch, int store, int raw, > > txt_len += > strlen(data_txt->pStringArray[i]) + 1; > > } > > > > - txt = ecalloc(txt_len * 2, 1); > > - txt_dst = txt; > > + txt = STR_SAFE_ALLOC(txt_len, 2, 0, 0); > > + txt_dst = txt->val; > > for (i = 0; i < count; i++) { > > int len = > strlen(data_txt->pStringArray[i]); > > memcpy(txt_dst, > data_txt->pStringArray[i], len); > > add_next_index_stringl(entries, > data_txt->pStringArray[i], len); > > txt_dst += len; > > } > > - > > - // TODO: avoid reallocation ??? > > - add_assoc_string(*subarray, "txt", txt); > > - efree(txt); > > + tct->len = txt_dst - txt->val; > > + add_assoc_str(*subarray, "txt", txt); > > To at least run nmake will be highly appreciated. You can always ping > us if something needs a deeper look or fix :) > > Thanks for your work! > > Cheers, > -- > Pierre > > @pierrejoye | http://www.libgd.org >

« previous php.cvs (#78175) next »