projects
/
ruby-vorbistagger.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Delete the temporary file when we're done with it.
[ruby-vorbistagger.git]
/
ext
/
comments.c
diff --git
a/ext/comments.c
b/ext/comments.c
index 98dd73c4e04b34ccf1876102bab67f2be59bcacc..a8236a51af5e514873d1ee0c318414ac5f74cdf1 100644
(file)
--- a/
ext/comments.c
+++ b/
ext/comments.c
@@
-48,7
+48,7
@@
comments_init (VALUE self, vcedit_state *state)
o->items = rb_ary_new2 (vc->comments);
for (i = 0; i < vc->comments; i++) {
o->items = rb_ary_new2 (vc->comments);
for (i = 0; i < vc->comments; i++) {
- VALUE k, v;
+ VALUE k, v
, pair
;
char *ptr, *content = vc->user_comments[i];
ptr = strchr (content, '=');
char *ptr, *content = vc->user_comments[i];
ptr = strchr (content, '=');
@@
-59,11
+59,11
@@
comments_init (VALUE self, vcedit_state *state)
v = rb_str_new2 (ptr + 1);
v = rb_str_new2 (ptr + 1);
- rb_ary_store (o->items, i,
- rb_ary_new3 (2, k, v));
- }
+ pair = rb_ary_new3 (2, k, v);
+ OBJ_FREEZE (pair);
- rb_iv_set (self, "@items", o->items);
+ rb_ary_store (o->items, i, pair);
+ }
}
void
}
void
@@
-138,12
+138,12
@@
c_inspect (VALUE self)
for (i = 0; i < items->len; i++) {
struct RArray *pair = RARRAY (items->ptr[i]);
for (i = 0; i < items->len; i++) {
struct RArray *pair = RARRAY (items->ptr[i]);
+ if (i)
+ rb_str_buf_cat (ret, ", ", 2);
+
rb_str_buf_append (ret, rb_inspect (pair->ptr[0]));
rb_str_buf_cat (ret, "=>", 2);
rb_str_buf_append (ret, rb_inspect (pair->ptr[1]));
rb_str_buf_append (ret, rb_inspect (pair->ptr[0]));
rb_str_buf_cat (ret, "=>", 2);
rb_str_buf_append (ret, rb_inspect (pair->ptr[1]));
-
- if (i < items->len - 1)
- rb_str_buf_cat (ret, ", ", 2);
}
rb_str_buf_cat (ret, "}", 1);
}
rb_str_buf_cat (ret, "}", 1);
@@
-291,7
+291,7
@@
c_get_empty (VALUE self)
Data_Get_Struct (self, RbVorbisComments, o);
Data_Get_Struct (self, RbVorbisComments, o);
- return
!RARRAY(o->items)->len
;
+ return
RARRAY(o->items)->len ? Qfalse : Qtrue
;
}
/*
}
/*
@@
-333,6
+333,7
@@
c_aref (VALUE self, VALUE key)
static VALUE
c_aset (VALUE self, VALUE key, VALUE value)
{
static VALUE
c_aset (VALUE self, VALUE key, VALUE value)
{
+ VALUE tmp;
RbVorbisComments *o;
struct RArray *items;
int i;
RbVorbisComments *o;
struct RArray *items;
int i;
@@
-352,7
+353,10
@@
c_aset (VALUE self, VALUE key, VALUE value)
}
}
}
}
- rb_ary_push (o->items, rb_ary_new3 (2, key, value));
+ tmp = rb_ary_new3 (2, rb_str_dup_frozen (key), value);
+ OBJ_FREEZE (tmp);
+
+ rb_ary_push (o->items, tmp);
return value;
}
return value;
}
@@
-545,6
+549,9
@@
Init_Comments (VALUE mVorbis)
rb_define_alias (c, "size", "length");
rb_define_alias (c, "each_pair", "each");
rb_define_alias (c, "size", "length");
rb_define_alias (c, "each_pair", "each");
+ rb_define_alias (c, "key?", "has_key?");
+ rb_define_alias (c, "include?", "has_key?");
+ rb_define_alias (c, "member?", "has_key?");
id_casecmp = rb_intern ("casecmp");
id_replace = rb_intern ("replace");
id_casecmp = rb_intern ("casecmp");
id_replace = rb_intern ("replace");