diff --git a/ext/htmlgrid/grid.c b/ext/htmlgrid/grid.c
index 56a50ef..6db471e 100644
--- a/ext/htmlgrid/grid.c
+++ b/ext/htmlgrid/grid.c
@@ -288,14 +288,16 @@ VALUE grid_width(self)
VALUE grid_cat_attribute(pair, string)
VALUE pair, string;
{
- VALUE val;
+ VALUE val, tmp1, tmp2;
char *key, *value;
long len;
val = rb_ary_entry(pair, 1);
if(val == Qnil)
return string;
- key = STR2CSTR(rb_ary_entry(pair, 0));
- value = STR2CSTR(rb_funcall(val, rb_intern("to_s"), 0));
+ tmp1 = rb_ary_entry(pair, 0);
+ key = StringValuePtr(tmp1);
+ tmp2 = rb_funcall(val, rb_intern("to_s"), 0);
+ value = StringValuePtr(tmp2);
char attr[strlen(key) + strlen(value) + 5];
len = sprintf(attr, " %s=\"%s\"", key, value);
return rb_str_cat(string, attr, len);
@@ -333,8 +335,9 @@ VALUE grid_store_allowed_attribute(pair, attrs)
VALUE pair, attrs;
{
char* key;
-
- key = STR2CSTR(rb_ary_entry(pair, 0));
+ VALUE tmp;
+ tmp = rb_ary_entry(pair, 0);
+ key = StringValuePtr(tmp);
if( strcasecmp(key, "align") == 0
|| strcasecmp(key, "class") == 0
|| strcasecmp(key, "colspan") == 0
@@ -749,7 +752,7 @@ void grid_field_add_tag(cf, tagname)
cField * cf;
VALUE tagname;
{
- strcpy(cf->tag, STR2CSTR(tagname));
+ strcpy(cf->tag, StringValuePtr(tagname));
}
VALUE grid_add_tag(argc, argv, self)