Skip to content

Commit 441168b

Browse files
committed
avoided memory duplication
1 parent f73befd commit 441168b

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

php_memcached.c

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -525,15 +525,14 @@ static
525525
void s_uint64_to_zval (zval *target, uint64_t value)
526526
{
527527
if (value >= ((uint64_t) LONG_MAX)) {
528-
char *buffer;
528+
zend_string *buffer;
529529
#ifdef PRIu64
530-
spprintf (&buffer, 0, "%" PRIu64, value);
530+
buffer = strpprintf (0, "%" PRIu64, value);
531531
#else
532532
/* Best effort */
533-
spprintf (&buffer, 0, "%llu", value);
533+
buffer = strpprintf (0, "%llu", value);
534534
#endif
535-
ZVAL_STRING (target, buffer);
536-
efree(buffer);
535+
ZVAL_STR(target, buffer);
537536
}
538537
else {
539538
ZVAL_LONG (target, (zend_long) value);
@@ -3331,28 +3330,28 @@ memcached_return s_server_cursor_list_servers_cb(const memcached_st *ptr, php_me
33313330
static
33323331
memcached_return s_server_cursor_version_cb(const memcached_st *ptr, php_memcached_instance_st instance, void *in_context)
33333332
{
3334-
char *address, *version;
3335-
size_t address_len, version_len;
3336-
3337-
zval *return_value = (zval *) in_context;
3333+
zend_string *address, *version;
3334+
zval rv, *return_value = (zval *)in_context;
33383335

33393336
#if defined(LIBMEMCACHED_VERSION_HEX) && LIBMEMCACHED_VERSION_HEX >= 0x01000009
3340-
version_len = spprintf(&version, sizeof(version), "%d.%d.%d",
3337+
version = strpprintf(0, "%d.%d.%d",
33413338
memcached_server_major_version(instance),
33423339
memcached_server_minor_version(instance),
33433340
memcached_server_micro_version(instance));
33443341
#else
3345-
version_len = spprintf(&version, sizeof(version) - 1, "%d.%d.%d",
3342+
version = strpprintf(0, "%d.%d.%d",
33463343
instance->major_version,
33473344
instance->minor_version,
33483345
instance->micro_version);
33493346
#endif
33503347

3351-
address_len = spprintf(&address, 0, "%s:%d", memcached_server_name(instance), memcached_server_port(instance) - 1);
3352-
add_assoc_stringl_ex(return_value, address, address_len, version, version_len);
3348+
address = strpprintf(0, "%s:%d", memcached_server_name(instance), memcached_server_port(instance) - 1);
3349+
3350+
ZVAL_STR(&rv, version);
3351+
zend_hash_add(Z_ARRVAL_P(return_value), address, &rv);
3352+
3353+
zend_string_release(address);
33533354

3354-
efree(address);
3355-
efree(version);
33563355
return MEMCACHED_SUCCESS;
33573356
}
33583357

0 commit comments

Comments
 (0)