diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-28 06:45:55 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-28 06:45:55 +0000 |
commit | 9eb17e6ae59a3151800d5ad61e5b75ce16a1ba80 (patch) | |
tree | 2e20290762add273874cf62b61a0c7c2adfd5d45 /ext/tk/tkutil | |
parent | 5562ffe0c74444fdd2e48fa54d2c3b014b49fa77 (diff) | |
download | ruby-9eb17e6ae59a3151800d5ad61e5b75ce16a1ba80.tar.gz |
tcltklib.c: allocate structs with wrapper
* ext/tk/tcltklib.c (ip_create_slave_core): allocate structs with
making new wrapper objects and get rid of potential memory leak.
* ext/tk/tkutil/tkutil.c (allocate_cbsubst_info): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/tkutil')
-rw-r--r-- | ext/tk/tkutil/tkutil.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/tk/tkutil/tkutil.c b/ext/tk/tkutil/tkutil.c index 6035a2a613..e0b8581759 100644 --- a/ext/tk/tkutil/tkutil.c +++ b/ext/tk/tkutil/tkutil.c @@ -1199,7 +1199,8 @@ allocate_cbsubst_info(struct cbsubst_info **inf_ptr) volatile VALUE proc, aliases; int idx; - inf = ALLOC(struct cbsubst_info); + VALUE info = TypedData_Make_Struct(cSUBST_INFO, struct cbsubst_info, + &cbsubst_info_type, inf); inf->full_subst_length = 0; @@ -1218,7 +1219,7 @@ allocate_cbsubst_info(struct cbsubst_info **inf_ptr) if (inf_ptr != (struct cbsubst_info **)NULL) *inf_ptr = inf; - return TypedData_Wrap_Struct(cSUBST_INFO, &cbsubst_info_type, inf); + return info; } static void @@ -1246,7 +1247,7 @@ cbsubst_initialize(argc, argv, self) inf = cbsubst_get_ptr(rb_obj_class(self)); - idx = 0; + idx = 0; for(iv_idx = 0; iv_idx < CBSUBST_TBL_MAX; iv_idx++) { if ( inf->ivar[iv_idx] == (ID) 0 ) continue; rb_ivar_set(self, inf->ivar[iv_idx], argv[idx++]); |