@@ -398,9 +398,7 @@ ra_call_extractor(RedisArray *ra, const char *key, int key_len, int *out_len TSR
398
398
}
399
399
400
400
* out_len = Z_STRLEN (z_ret );
401
- out = emalloc (* out_len + 1 );
402
- out [* out_len ] = 0 ;
403
- memcpy (out , Z_STRVAL (z_ret ), * out_len );
401
+ out = estrndup (Z_STRVAL (z_ret ), * out_len );
404
402
405
403
zval_dtor (& z_argv0 );
406
404
zval_dtor (& z_ret );
@@ -410,7 +408,7 @@ ra_call_extractor(RedisArray *ra, const char *key, int key_len, int *out_len TSR
410
408
static char *
411
409
ra_extract_key (RedisArray * ra , const char * key , int key_len , int * out_len TSRMLS_DC ) {
412
410
413
- char * start , * end , * out ;
411
+ char * start , * end ;
414
412
* out_len = key_len ;
415
413
416
414
if (Z_TYPE (ra -> z_fun ) != IS_UNDEF )
@@ -426,11 +424,7 @@ ra_extract_key(RedisArray *ra, const char *key, int key_len, int *out_len TSRMLS
426
424
427
425
/* found substring */
428
426
* out_len = end - start - 1 ;
429
- out = emalloc (* out_len + 1 );
430
- out [* out_len ] = 0 ;
431
- memcpy (out , start + 1 , * out_len );
432
-
433
- return out ;
427
+ return estrndup (start + 1 , * out_len );
434
428
}
435
429
436
430
/* call userland key distributor function */
@@ -737,10 +731,8 @@ ra_rehash_scan(zval *z_redis, char ***keys, int **key_lens, const char *cmd, con
737
731
key_len = Z_STRLEN_P (z_data_p );
738
732
739
733
/* copy key and length */
740
- (* keys )[i ] = emalloc (1 + key_len );
741
- memcpy ((* keys )[i ], key , key_len );
734
+ (* keys )[i ] = estrndup (key , key_len );
742
735
(* key_lens )[i ] = key_len ;
743
- (* keys )[i ][key_len ] = 0 ; /* null-terminate string */
744
736
}
745
737
746
738
/* cleanup */
0 commit comments