summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-06-14 10:27:40 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2014-06-14 10:27:40 -0700
commit3404d819ae99a57c606483baeef9c1df5992665e (patch)
tree559c6486dd75c5bf0aed8c9e6fca8d9d79cca644 /ext
parent6d661792298cd9edb2e4d0ee7aea164e5ead7fbb (diff)
downloadffi-yajl-3404d819ae99a57c606483baeef9c1df5992665e.tar.gz
avoid memcpy of the key
Diffstat (limited to 'ext')
-rw-r--r--ext/ffi_yajl/ext/parser/parser.c6
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;
}