[#26468] $SAFE=1 の open-uri で redirect 時にエラー — Kazuhiko <kazuhiko@...>

かずひこです。

40 messages 2005/07/07
[#26469] Re: $SAFE=1 の open-uri で redirect 時にエラー — Tanaka Akira <akr@...17n.org> 2005/07/07

In article <m3zmsylimn.wl%kazuhiko@fdiary.net>,

[#26470] Re: $SAFE=1 の open-uri で redirect 時にエラー — Yukihiro Matsumoto <matz@...> 2005/07/07

まつもと ゆきひろです

[#26471] Re: $SAFE=1 の open-uri で redirect 時にエラー — Tanaka Akira <akr@...17n.org> 2005/07/07

In article <1120754832.716261.15867.nullmailer@x31.priv.netlab.jp>,

[#26472] Re: $SAFE=1 の open-uri で redirect 時にエラー — Yukihiro Matsumoto <matz@...> 2005/07/07

まつもと ゆきひろです

[#26475] Re: $SAFE=1 の open-uri で redirect 時にエラー — Tanaka Akira <akr@...17n.org> 2005/07/08

In article <1120762886.189058.18880.nullmailer@x31.priv.netlab.jp>,

[#26476] Re: $SAFE=1 の open-uri で redirect 時にエラー — Yukihiro Matsumoto <matz@...> 2005/07/08

まつもと ゆきひろです

[#26479] Re: $SAFE=1 の open-uri で redirect 時にエラー — Tanaka Akira <akr@...17n.org> 2005/07/08

In article <1120810939.815280.27104.nullmailer@x31.priv.netlab.jp>,

[#26483] Re: $SAFE=1 の open-uri で redirect 時にエラー — Yukihiro Matsumoto <matz@...> 2005/07/08

まつもと ゆきひろです

[#26485] Re: $SAFE=1 の open-uri で redirect 時にエラー — Shugo Maeda <shugo@...> 2005/07/08

前田です。

[#26486] Re: $SAFE=1 の open-uri で redirect 時にエラー — Yukihiro Matsumoto <matz@...> 2005/07/08

まつもと ゆきひろです

[#26525] Re: $SAFE=1 の open-uri で redirect 時にエラー — Tanaka Akira <akr@...17n.org> 2005/07/12

In article <42CF1918.5000603@ruby-lang.org>,

[#26493] can't handle \c\ — KIMURA Koichi <kbk@...>

木村です。

18 messages 2005/07/09
[#26496] Re: can't handle \c\ — "URABE Shyouhei aka. mput" <root@...> 2005/07/10

卜部でございます。

[#26574] SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — Tanaka Akira <akr@...17n.org>

次のように、メッセージの最後が切れます。

28 messages 2005/07/19
[#26576] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — Yukihiro Matsumoto <matz@...> 2005/07/19

まつもと ゆきひろです

[#26578] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — nobu@... 2005/07/19

なかだです。

[#26579] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/07/19

山本です。

[#26580] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — Yukihiro Matsumoto <matz@...> 2005/07/19

まつもと ゆきひろです

[#26586] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/07/20

なかだです。

[#26587] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/07/20

山本です。

[#26589] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — nobu@... 2005/07/20

なかだです。

[#26597] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/07/21

山本です。

[#26599] Re: SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/07/22

なかだです。

[#26628] show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

37 messages 2005/07/28
[#26632] Re: show information of '--enable-pthread' — Yukihiro Matsumoto <matz@...> 2005/07/28

まつもと ゆきひろです

[#26634] Re: show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...> 2005/07/28

永井@知能.九工大です.

[#26635] Re: show information of '--enable-pthread' — WATANABE Hirofumi <eban@...> 2005/07/28

わたなべです。

[#26645] Re: show information of '--enable-pthread' — "U.Nakamura" <usa@...> 2005/07/29

こんにちは、なかむら(う)です。

[#26646] Re: show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...> 2005/07/29

永井@知能.九工大です.

[#26658] Re: show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...> 2005/07/31

永井@知能.九工大です.

[#26659] Re: show information of '--enable-pthread' — Takahiro Kambe <taca@...> 2005/07/31

In message <20050731.094203.74726476.nagai@ai.kyutech.ac.jp>

[#26662] Re: show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...> 2005/07/31

永井@知能.九工大です.

[#26663] Re: show information of '--enable-pthread' — "U.Nakamura" <usa@...> 2005/07/31

こんにちは、なかむら(う)です。

[#26669] Re: show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...> 2005/08/01

永井@知能.九工大です.

[ruby-dev:26530] removing static variables in parse.y

From: nobuyoshi nakada <nobuyoshi.nakada@...>
Date: 2005-07-13 09:08:15 UTC
List: ruby-dev #26530
なかだです。

スレッドセーフ化の準備というわけでもないですが、parse.yから
static変数を減らしてみました。といっても、実際には
ruby__end__seenとruby_debug_linesだけですが。

あとはシンボルテーブルですが、実行環境を完全に独立させるわけで
もない限り、これは共有すべきでしょう。

Sydneyはそこまで分けようとしてるのかな? Objectまで分けてるとこ
ろを見ると。


Index: Makefile.in
===================================================================
RCS file: /cvs/ruby/src/ruby/Makefile.in,v
retrieving revision 1.72
diff -U2 -p -r1.72 Makefile.in
--- Makefile.in	20 Apr 2005 14:22:57 -0000	1.72
+++ Makefile.in	13 Jul 2005 07:56:49 -0000
@@ -155,5 +155,5 @@ $(srcdir)/configure: $(srcdir)/configure
 lex.c: keywords
 	@-$(RM) $@
-	gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? > $@ || \
+	gperf -C -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? > $@ || \
 	cp "$(srcdir)/$@" .
 
Index: keywords
===================================================================
RCS file: /cvs/ruby/src/ruby/keywords,v
retrieving revision 1.9
diff -U2 -p -r1.9 keywords
--- keywords	8 Feb 2005 13:38:49 -0000	1.9
+++ keywords	13 Jul 2005 08:01:02 -0000
@@ -1,4 +1,4 @@
 struct kwtable {char *name; int id[2]; enum lex_state_e state;};
-struct kwtable *rb_reserved_word _((const char *, unsigned int));
+const struct kwtable *rb_reserved_word _((const char *, unsigned int));
 #ifndef RIPPER
 
Index: lex.c
===================================================================
RCS file: /cvs/ruby/src/ruby/lex.c,v
retrieving revision 1.13
diff -U2 -p -r1.13 lex.c
--- lex.c	8 Feb 2005 13:39:47 -0000	1.13
+++ lex.c	13 Jul 2005 08:01:11 -0000
@@ -1,6 +1,6 @@
 /* C code produced by gperf version 2.7.2 */
-/* Command-line: gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k'1,3,$' keywords  */
+/* Command-line: gperf -C -p -j1 -i 1 -g -o -t -N rb_reserved_word -k'1,3,$' keywords  */
 struct kwtable {char *name; int id[2]; enum lex_state_e state;};
-struct kwtable *rb_reserved_word _((const char *, unsigned int));
+const struct kwtable *rb_reserved_word _((const char *, unsigned int));
 #ifndef RIPPER
 ;
@@ -25,5 +25,5 @@ hash (str, len)
      register unsigned int len;
 {
-  static unsigned char asso_values[] =
+  static const unsigned char asso_values[] =
     {
       56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
@@ -72,10 +72,10 @@ hash (str, len)
 __inline
 #endif
-struct kwtable *
+const struct kwtable *
 rb_reserved_word (str, len)
      register const char *str;
      register unsigned int len;
 {
-  static struct kwtable wordlist[] =
+  static const struct kwtable wordlist[] =
     {
       {""}, {""}, {""}, {""}, {""}, {""},
Index: node.h
===================================================================
RCS file: /cvs/ruby/src/ruby/node.h,v
retrieving revision 1.66
diff -U2 -p -r1.66 node.h
--- node.h	16 Mar 2005 15:18:02 -0000	1.66
+++ node.h	13 Jul 2005 07:25:00 -0000
@@ -351,4 +351,11 @@ typedef struct RNode {
 #define NOEX_UNDEF     NOEX_NOSUPER
 
+VALUE rb_parser_new _((void));
+VALUE rb_parser_end_seen_p _((VALUE));
+
+NODE *rb_parser_compile_cstr _((volatile VALUE, const char*, const char*, int, int));
+NODE *rb_parser_compile_string _((volatile VALUE, const char*, VALUE, int));
+NODE *rb_parser_compile_file _((volatile VALUE, const char*, VALUE, int));
+
 NODE *rb_compile_cstr _((const char*, const char*, int, int));
 NODE *rb_compile_string _((const char*, VALUE, int));
Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.388
diff -U2 -p -r1.388 parse.y
--- parse.y	28 Jun 2005 13:08:32 -0000	1.388
+++ parse.y	13 Jul 2005 08:00:38 -0000
@@ -144,11 +144,12 @@ struct parser_params {
     VALUE (*parser_lex_gets) _((struct parser_params*,VALUE));
     struct local_vars *parser_lvtbl;
+    int parser_ruby__end__seen;
 #ifndef RIPPER
     /* Ruby core only */
     NODE *parser_eval_tree_begin;
     NODE *parser_eval_tree;
+    VALUE debug_lines;
 #else
     /* Ripper only */
-    int parser_ruby__end__seen;
     int parser_ruby_sourceline;
     VALUE parser_ruby_sourcefile;
@@ -199,8 +200,10 @@ static int parser_yyerror _((struct pars
 #define lex_gets		(parser->parser_lex_gets)
 #define lvtbl			(parser->parser_lvtbl)
-#ifdef RIPPER
 #define ruby__end__seen		(parser->parser_ruby__end__seen)
+#ifdef RIPPER
 #define ruby_sourceline		(parser->parser_ruby_sourceline)
 #define ruby_sourcefile		(parser->parser_ruby_sourcefile)
+#else
+#define ruby_debug_lines	(parser->debug_lines)
 #endif
 
@@ -4438,7 +4441,4 @@ static void parser_prepare _((struct par
 
 #ifndef RIPPER
-int ruby__end__seen;
-static VALUE ruby_debug_lines;
-
 static NODE*
 yycompile(parser, f, line)
@@ -4547,5 +4547,16 @@ rb_compile_string(f, s, line)
     int line;
 {
-    VALUE volatile vparser = rb_parser_s_new();
+    VALUE volatile vparser = rb_parser_new();
+
+    return rb_parser_compile_string(vparser, f, s, line);
+}
+
+NODE*
+rb_parser_compile_string(vparser, f, s, line)
+    volatile VALUE vparser;
+    const char *f;
+    VALUE s;
+    int line;
+{
     struct parser_params *parser;
 
@@ -4568,4 +4579,13 @@ rb_compile_cstr(f, s, len, line)
 }
 
+NODE*
+rb_parser_compile_cstr(vparser, f, s, len, line)
+    volatile VALUE vparser;
+    const char *f, *s;
+    int len, line;
+{
+    return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
+}
+
 static VALUE lex_io_gets _((struct parser_params *, VALUE));
 static VALUE
@@ -4583,5 +4603,16 @@ rb_compile_file(f, file, start)
     int start;
 {
-    VALUE volatile vparser = rb_parser_s_new();
+    VALUE volatile vparser = rb_parser_new();
+
+    return rb_parser_compile_file(vparser, f, file, start);
+}
+
+NODE*
+rb_parser_compile_file(vparser, f, file, start)
+    volatile VALUE vparser;
+    const char *f;
+    VALUE file;
+    int start;
+{
     struct parser_params *parser;
     
@@ -6670,5 +6701,5 @@ parser_yylex(parser)
 
 	    if (lex_state != EXPR_DOT) {
-		struct kwtable *kw;
+		const struct kwtable *kw;
 
 		/* See if it is a reserved word.  */
@@ -8156,5 +8187,4 @@ void
 rb_gc_mark_parser()
 {
-    rb_gc_mark(ruby_debug_lines);
 }
 
@@ -8208,5 +8238,5 @@ rb_parser_while_loop(node, chop, split)
 }
 
-static struct {
+static const struct {
     ID token;
     char *name;
@@ -8254,20 +8284,21 @@ static struct {
 };
 
-static st_table *sym_tbl;
-static st_table *sym_rev_tbl;
+static struct symbols {
+    ID last_id;
+    st_table *tbl;
+    st_table *rev;
+} global_symbols = {tLAST_TOKEN};
 
 void
 Init_sym()
 {
-    sym_tbl = st_init_strtable_with_size(200);
-    sym_rev_tbl = st_init_numtable_with_size(200);
+    global_symbols.tbl = st_init_strtable_with_size(200);
+    global_symbols.rev = st_init_numtable_with_size(200);
 }
 
-static ID last_id = tLAST_TOKEN;
-
 static ID
 internal_id()
 {
-    return ID_INTERNAL | (++last_id << ID_SCOPE_SHIFT);
+    return ID_INTERNAL | (++global_symbols.last_id << ID_SCOPE_SHIFT);
 }
 
@@ -8280,5 +8311,5 @@ rb_intern(name)
     int last;
 
-    if (st_lookup(sym_tbl, (st_data_t)name, (st_data_t *)&id))
+    if (st_lookup(global_symbols.tbl, (st_data_t)name, (st_data_t *)&id))
 	return id;
 
@@ -8340,9 +8371,9 @@ rb_intern(name)
     }
     if (*m) id = ID_JUNK;
-    id |= ++last_id << ID_SCOPE_SHIFT;
+    id |= ++global_symbols.last_id << ID_SCOPE_SHIFT;
   id_regist:
     name = strdup(name);
-    st_add_direct(sym_tbl, (st_data_t)name, id);
-    st_add_direct(sym_rev_tbl, id, (st_data_t)name);
+    st_add_direct(global_symbols.tbl, (st_data_t)name, id);
+    st_add_direct(global_symbols.rev, id, (st_data_t)name);
     return id;
 }
@@ -8363,5 +8394,5 @@ rb_id2name(id)
     }
 
-    if (st_lookup(sym_rev_tbl, id, (st_data_t *)&name))
+    if (st_lookup(global_symbols.rev, id, (st_data_t *)&name))
 	return name;
 
@@ -8416,7 +8447,7 @@ VALUE
 rb_sym_all_symbols()
 {
-    VALUE ary = rb_ary_new2(sym_tbl->num_entries);
+    VALUE ary = rb_ary_new2(global_symbols.tbl->num_entries);
 
-    st_foreach(sym_tbl, symbols_i, ary);
+    st_foreach(global_symbols.tbl, symbols_i, ary);
     return ary;
 }
@@ -8467,5 +8498,5 @@ special_local_set(c, val)
     VALUE val;
 {
-    VALUE volatile vparser = rb_parser_s_new();
+    VALUE volatile vparser = rb_parser_new();
     struct parser_params *parser;
     int cnt;
@@ -8549,4 +8580,5 @@ parser_initialize(parser)
     parser->parser_lex_pend = 0;
     parser->parser_lvtbl = 0;
+    parser->parser_ruby__end__seen = 0;
 #ifndef RIPPER
     parser->parser_eval_tree_begin = 0;
@@ -8574,4 +8606,5 @@ parser_mark(ptr)
     rb_gc_mark((VALUE)p->parser_eval_tree_begin) ;
     rb_gc_mark((VALUE)p->parser_eval_tree) ;
+    rb_gc_mark(p->debug_lines);
 #else
     rb_gc_mark(p->parser_ruby_sourcefile);
@@ -8613,6 +8646,6 @@ parser_new()
 }
 
-static VALUE
-rb_parser_s_new()
+VALUE
+rb_parser_new()
 {
     struct parser_params *p = parser_new();
@@ -8622,4 +8655,21 @@ rb_parser_s_new()
 #endif
 
+/*
+ *  call-seq:
+ *    ripper#end_seen?   -> Boolean
+ *
+ *  Return if parsed source ended by +\_\_END\_\_+.
+ *  This number starts from 1.
+ */
+VALUE
+rb_parser_end_seen_p(vparser)
+    VALUE vparser;
+{
+    struct parser_params *parser;
+
+    Data_Get_Struct(vparser, struct parser_params, parser);
+    return ruby__end__seen ? Qtrue : Qfalse;
+}
+
 #ifdef RIPPER
 #ifdef RIPPER_DEBUG
@@ -8973,5 +9023,4 @@ ripper_initialize(argc, argv, self)
     parser->parser_ruby_sourcefile = fname;
     parser->parser_ruby_sourceline = NIL_P(lineno) ? 0 : NUM2INT(lineno) - 1;
-    parser->parser_ruby__end__seen = 0;
 
     return Qnil;
@@ -9144,4 +9193,5 @@ Init_ripper()
     rb_define_method(Ripper, "column", ripper_column, 0);
     rb_define_method(Ripper, "lineno", ripper_lineno, 0);
+    rb_define_method(Ripper, "end_seen?", rb_parser_end_seen_p, 0);
 #ifdef RIPPER_DEBUG
     rb_define_method(rb_mKernel, "assert_Qundef", ripper_assert_Qundef, 2);
Index: ruby.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ruby.c,v
retrieving revision 1.104
diff -U2 -p -r1.104 ruby.c
--- ruby.c	28 Jun 2005 13:08:32 -0000	1.104
+++ ruby.c	13 Jul 2005 07:13:07 -0000
@@ -389,5 +389,5 @@ require_libraries()
 
 	ruby_current_node = 0;
-	rb_protect((VALUE (*)(VALUE))rb_require, (VALUE)list->name, &state);
+	rb_protect((VALUE (*)_((VALUE)))rb_require, (VALUE)list->name, &state);
 	if (state) rb_jump_tag(state);
 	tmp = list->next;
@@ -865,6 +865,4 @@ proc_options(argc, argv)
 }
 
-extern int ruby__end__seen;
-
 static void
 load_file(fname, script)
@@ -873,4 +871,5 @@ load_file(fname, script)
 {
     extern VALUE rb_stdin;
+    VALUE parser;
     VALUE f;
     int line_start = 1;
@@ -985,6 +984,7 @@ load_file(fname, script)
 	if (NIL_P(c)) return;
     }
-    ruby_eval_tree = rb_compile_file(fname, f, line_start);
-    if (script && ruby__end__seen) {
+    parser = rb_parser_new();
+    ruby_eval_tree = rb_parser_compile_file(parser, fname, f, line_start);
+    if (script && rb_parser_end_seen_p(parser)) {
 	rb_define_global_const("DATA", f);
     }


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next