]> git.wincent.com - wikitext.git/commitdiff
Silence compiler warning in StringValue
authorWincent Colaiuta <win@wincent.com>
Thu, 6 Aug 2009 12:11:21 +0000 (14:11 +0200)
committerWincent Colaiuta <win@wincent.com>
Thu, 6 Aug 2009 12:11:21 +0000 (14:11 +0200)
Our use of "StringValue(j)", where "j" is of type "long" and the macro
wants a value of type "VALUE" ("unsigned long") produce a warning that
"pointer targets in passing argument 1 of ‘rb_string_value’ differ in
signedness".

Merely casting ("StringValue((VALUE)j)") doesn't work because
"StringValue" itself is a macro and produces this warning: "argument to
'&' not really an lvalue; this will be a hard error in the future".

So use a temporary variable to suppress the warning without having to
use a cast inside the macro.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/parser.c

index 4728ad8a77fadd5c03a61deda9d448ca50c5fc08..52c08895dd4d9fc7f76c24cd48f2f6252366cfa2 100644 (file)
@@ -2158,7 +2158,10 @@ VALUE Wikitext_parser_parse(int argc, VALUE *argv, VALUE self)
                     {
                         j = rb_funcall(link_proc, rb_intern("call"), 1, string_from_str(parser->link_target));
                         if (!NIL_P(j))
-                            j = StringValue(j);
+                        {
+                            VALUE l = j; // can't cast inside StringValue macro
+                            j = StringValue(l);
+                        }
                     }
                     wiki_encode_link_target(parser);
                     wiki_pop_from_stack_up_to(parser, output, LINK_START, true);