[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>

21 messages 2000/09/04
[#4768] RE: Wiki — "NAKAMURA, Hiroshi" <nahi@...> 2000/09/04

Hi, Glen,

[#4783] Re: Wiki — Masatoshi SEKI <m_seki@...> 2000/09/04

[#4785] Re: Wiki — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/09/05

Howdy,

[#4883] Re-binding a block — Dave Thomas <Dave@...>

16 messages 2000/09/12

[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/09/15

[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>

20 messages 2000/09/16

[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>

15 messages 2000/09/21

[#5077] Crazy idea? infix method calls — hal9000@...

This is a generalization of the "in" operator idea which I

17 messages 2000/09/22

[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>

When I try to compile Ruby 1.6.1, I get the following error:

15 messages 2000/09/27

[ruby-talk:5092] RE: Hanging require

From: Aleksi Niemel<aleksi.niemela@...>
Date: 2000-09-24 20:36:54 UTC
List: ruby-talk #5092
>   ruby -v a.rb
>   ruby 1.6.0 (2000-09-19) [i686-linux]
>   << and hangs >>

Here's a patch for my earlier hanging. I can't say for sure this works, as
I'm not so familiar with Ruby internals, especially feature loading. If it
does it's due to Yashi's help. If it doesn't all the blame is on me.  

(Actually the version in next example is 1.6.1, but I had to tweak version.h
because rbconfig.rb didn't run nicely when building.)

  ~/src/ruby/ruby -v a.rb 
  ruby 1.6.0 (2000-09-24) [i686-linux]
  ./b.rb:1: undefined local variable or method `foo' for 
        #<Object:0x40187d08> (NameError)
        from ./b_ext.rb:1:in `require'
        from ./b_ext.rb:1
        from a.rb:1:in `require'
        from a.rb:1

	- Aleksi


Index: eval.c
===================================================================
RCS file: /home/cvs/ruby/eval.c,v
retrieving revision 1.109
diff -u -r1.109 eval.c
--- eval.c      2000/09/22 18:15:41     1.109
+++ eval.c      2000/09/24 20:32:14
@@ -5031,7 +5031,7 @@
 {
     VALUE *p, *pend;
     char *f;
-    int len;
+    int len_f, len_feature;
 
     p = RARRAY(rb_features)->ptr;
     pend = p + RARRAY(rb_features)->len;
@@ -5040,12 +5040,13 @@
        if (strcmp(f, feature) == 0) {
            goto load_wait;
        }
-       len = strlen(feature);
-       if (strncmp(f, feature, len) == 0) {
-           if (strcmp(f+len, ".so") == 0) {
+       len_f = strlen(f);
+       len_feature = strlen(feature);
+       if (len_f == len_feature && strncmp(f, feature, len_f) == 0) {
+           if (strcmp(f+len_f, ".so") == 0) {
                return Qtrue;
            }
-           if (strcmp(f+len, ".rb") == 0) {
+           if (strcmp(f+len_f, ".rb") == 0) {
                if (wait) goto load_wait;
                return Qtrue;
            }


In This Thread

Prev Next