summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'object.c')
-rw-r--r--object.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/object.c b/object.c
index 6bfa10335b..3dc1243141 100644
--- a/object.c
+++ b/object.c
@@ -547,8 +547,9 @@ class_s_new(argc, argv)
{
VALUE super, klass;
- rb_scan_args(argc, argv, "01", &super);
- if (NIL_P(super)) super = cObject;
+ if (rb_scan_args(argc, argv, "01", &super) == 0) {
+ super = cObject;
+ }
Check_Type(super, T_CLASS);
if (FL_TEST(super, FL_SINGLETON)) {
TypeError("can't make subclass of virtual class");
@@ -770,7 +771,11 @@ fail_to_type(arg)
struct arg_to *arg;
{
TypeError("failed to convert %s into %s",
- rb_class2name(CLASS_OF(arg->val)), arg->s);
+ NIL_P(arg->val) ? "nil" :
+ arg->val == TRUE ? "true" :
+ arg->val == FALSE ? "false" :
+ rb_class2name(CLASS_OF(arg->val)),
+ arg->s);
}
VALUE
@@ -838,7 +843,6 @@ str2cstr(str, len)
VALUE str;
int *len;
{
- if (NIL_P(str)) return NULL;
if (TYPE(str) != T_STRING) {
str = str_to_str(str);
}