summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-06-14 11:57:14 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2014-06-14 11:57:14 -0700
commit932be4351bed43385ec28b5fee6e0b874afa086e (patch)
tree9769133f1ca9bdee9ab4d3c145febe92099fbc49 /ext
parent63f0054a3d8fea181d086a632c0c134719ceb1cb (diff)
downloadffi-yajl-932be4351bed43385ec28b5fee6e0b874afa086e.tar.gz
remove useless memcpy
Diffstat (limited to 'ext')
-rw-r--r--ext/ffi_yajl/ext/parser/parser.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/ext/ffi_yajl/ext/parser/parser.c b/ext/ffi_yajl/ext/parser/parser.c
index 6833a88..f9f5cc2 100644
--- a/ext/ffi_yajl/ext/parser/parser.c
+++ b/ext/ffi_yajl/ext/parser/parser.c
@@ -90,24 +90,15 @@ int number_callback(void *ctx, const char *numberVal, size_t numberLen) {
}
int string_callback(void *ctx, const unsigned char *stringVal, size_t stringLen) {
- char *buf = (char *)malloc(stringLen+1);
- VALUE str;
+ VALUE str = rb_str_new((const char *)stringVal, stringLen);
#ifdef HAVE_RUBY_ENCODING_H
- rb_encoding *default_internal_enc;
-#endif
-
- buf[stringLen] = 0;
- memcpy(buf, stringVal, stringLen);
- str = rb_str_new2(buf);
-#ifdef HAVE_RUBY_ENCODING_H
- default_internal_enc = rb_default_internal_encoding();
+ rb_encoding *default_internal_enc = rb_default_internal_encoding();
rb_enc_associate(str, utf8Encoding);
if (default_internal_enc) {
str = rb_str_export_to_enc(str, default_internal_enc);
}
#endif
set_value(ctx,str);
- free(buf);
return 1;
}