diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-14 10:27:40 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-14 10:27:40 -0700 |
commit | 3404d819ae99a57c606483baeef9c1df5992665e (patch) | |
tree | 559c6486dd75c5bf0aed8c9e6fca8d9d79cca644 /ext/ffi_yajl/ext | |
parent | 6d661792298cd9edb2e4d0ee7aea164e5ead7fbb (diff) | |
download | ffi-yajl-3404d819ae99a57c606483baeef9c1df5992665e.tar.gz |
avoid memcpy of the key
Diffstat (limited to 'ext/ffi_yajl/ext')
-rw-r--r-- | ext/ffi_yajl/ext/parser/parser.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/ext/ffi_yajl/ext/parser/parser.c b/ext/ffi_yajl/ext/parser/parser.c index 1f88442..7ca9c90 100644 --- a/ext/ffi_yajl/ext/parser/parser.c +++ b/ext/ffi_yajl/ext/parser/parser.c @@ -116,15 +116,12 @@ int start_map_callback(void *ctx) { } int map_key_callback(void *ctx, const unsigned char *stringVal, size_t stringLen) { - char *buf = (char *)malloc(stringLen+1); VALUE str; #ifdef HAVE_RUBY_ENCODING_H rb_encoding *default_internal_enc; #endif - buf[stringLen] = 0; - memcpy(buf, stringVal, stringLen); - str = rb_str_new2(buf); + str = rb_str_new((const char *)stringVal, stringLen); #ifdef HAVE_RUBY_ENCODING_H default_internal_enc = rb_default_internal_encoding(); rb_enc_associate(str, utf8Encoding); @@ -133,7 +130,6 @@ int map_key_callback(void *ctx, const unsigned char *stringVal, size_t stringLen } #endif set_key(ctx,str); - free(buf); return 1; } |