summaryrefslogtreecommitdiff
path: root/ext/md5/md5init.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/md5/md5init.c')
-rw-r--r--ext/md5/md5init.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/ext/md5/md5init.c b/ext/md5/md5init.c
index 9827b784cf..64bba9dab3 100644
--- a/ext/md5/md5init.c
+++ b/ext/md5/md5init.c
@@ -21,12 +21,10 @@ md5i_update(obj, str)
VALUE obj, str;
{
md5_state_t *md5;
- char *p;
- int len;
- p = rb_str2cstr(str, &len);
+ StringValue(str);
Data_Get_Struct(obj, md5_state_t, md5);
- md5_append(md5, p, len);
+ md5_append(md5, RSTRING(str)->ptr, RSTRING(str)->len);
return obj;
}
@@ -83,13 +81,14 @@ md5i_new(argc, argv, class)
VALUE* argv;
VALUE class;
{
- VALUE obj;
+ VALUE obj, str;
md5_state_t *md5;
obj = Data_Make_Struct(class, md5_state_t, 0, free, md5);
md5_init(md5);
+ rb_scan_args(argc, argv, "01", &str);
if (argc == 1) {
- md5i_update(obj, argv[0]);
+ md5i_update(obj, str);
}
return obj;