[macruby-changes] [3904] MacRuby/trunk/parse.y
source_changes at macosforge.org
source_changes at macosforge.org
Sat Apr 3 20:00:10 PDT 2010
Revision: 3904
http://trac.macosforge.org/projects/ruby/changeset/3904
Author: lsansonetti at apple.com
Date: 2010-04-03 20:00:09 -0700 (Sat, 03 Apr 2010)
Log Message:
-----------
fixed ripper parsing
Modified Paths:
--------------
MacRuby/trunk/parse.y
Modified: MacRuby/trunk/parse.y
===================================================================
--- MacRuby/trunk/parse.y 2010-04-03 20:27:38 UTC (rev 3903)
+++ MacRuby/trunk/parse.y 2010-04-04 03:00:09 UTC (rev 3904)
@@ -9924,18 +9924,29 @@
Data_Get_Struct(self, struct parser_params, parser);
rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
-#if 0 // TODO
- if (rb_obj_respond_to(src, ripper_id_gets, 0)) {
- parser->parser_lex_gets = ripper_lex_get_generic;
+
+ UChar *chars = NULL;
+ long chars_len = 0;
+ bool need_free = false;
+ rb_str_get_uchars(src, &chars, &chars_len, &need_free);
+
+ if (need_free) {
+ UChar *tmp = (UChar *)xmalloc(sizeof(UChar) * chars_len);
+ memcpy(tmp, chars, sizeof(UChar) * chars_len);
+ free(chars);
+ chars = tmp;
}
- else
-#endif
- {
- StringValue(src);
- parser->parser_lex_gets = lex_get_str;
- }
- GC_WB(&parser->parser_lex_input, src);
+
+ struct lex_get_str_context *ctx = (struct lex_get_str_context *)
+ xmalloc(sizeof(struct lex_get_str_context));
+ GC_WB(&ctx->str, src);
+ ctx->chars = chars;
+ ctx->chars_len = chars_len;
+
+ parser->parser_lex_gets = lex_get_str;
+ GC_WB(&parser->parser_lex_input, ctx);
parser->eofp = Qfalse;
+
if (NIL_P(fname)) {
fname = STR_NEW2("(ripper)");
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100403/a5eef05e/attachment.html>
More information about the macruby-changes
mailing list