aboutsummaryrefslogtreecommitdiffstats
path: root/ext/syck/syck.h
diff options
context:
space:
mode:
authorocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-19 14:13:27 +0000
committerocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-19 14:13:27 +0000
commit9488784157d833fcc8c6b40978821be98e94ef6c (patch)
tree6b1fb676554c5c614b9a4e1bb5a9e71972e23af7 /ext/syck/syck.h
parent56479b7346bbe9d428746fbe53755e7c790dee78 (diff)
downloadruby-9488784157d833fcc8c6b40978821be98e94ef6c.tar.gz
* ext/syck/syck.h (S_FREE): small hack. no need to check if pointer is
NULL or not before S_FREE. * ext/syck/rubyext.c (syck_parser_assign_io): rb_check_string_type can return new RString. if so, it becomes unreachable from GC after returns syck_parser_assign_io, and can be freed by GC. (dangling in syck io system) so extends its life time till syck_parse is called. * ext/syck/rubyext.c (syck_parser_s_alloc): always allocates bonus, so no need to check if NULL, and "volatile VALUE hash" is not needed. (bonus->port was not protected in syck_emitter_reset) * ext/syck/rubyext.c (syck_mark_parser): ditto. * ext/syck/rubyext.c (syck_parser_load): ditto. * ext/syck/rubyext.c (syck_parser_load_documents): ditto. * ext/syck/rubyext.c (syck_emitter_s_alloc): ditto. * ext/syck/rubyext.c (syck_mark_emitter): ditto. * ext/syck/rubyext.c (syck_emitter_reset): ditto. * ext/syck/rubyext.c (syck_scalar_value_set): "should set newly allocated memory instead of RString's internal storage" stuff again. by this, should call syck_free_node instead of rb_syck_free_node. * ext/syck/rubyext.c (syck_node_type_id_set): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/syck.h')
-rw-r--r--ext/syck/syck.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/ext/syck/syck.h b/ext/syck/syck.h
index f7ac39fc94..c49f740173 100644
--- a/ext/syck/syck.h
+++ b/ext/syck/syck.h
@@ -51,7 +51,7 @@ extern "C" {
#define S_ALLOC_N(type,n) (type*)malloc(sizeof(type)*(n))
#define S_ALLOC(type) (type*)malloc(sizeof(type))
#define S_REALLOC_N(var,type,n) (var)=(type*)realloc((char*)(var),sizeof(type)*(n))
-#define S_FREE(n) free(n); n = NULL;
+#define S_FREE(n) if (n) { free(n); n = NULL; }
#define S_ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n))