[#4065] Surprise in Time#sec — Steven Jenkins <steven.jenkins@...>
This bit me:
[#4067] Segfault in Thread#initialize / caller — Florian Gro<florgro@...>
Moin!
[#4076] Ruby/DL — Jamis Buck <jamis_buck@...>
I recently used Ruby/DL to create bindings to the SQLite3 embedded
On Tue, Jan 04, 2005 at 02:53:49AM +0900, Jamis Buck wrote:
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
On Wed, Jan 05, 2005 at 03:05:48AM +0900, ts wrote:
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
On Thu, Jan 06, 2005 at 01:10:34AM +0900, ts wrote:
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
On Thu, Jan 06, 2005 at 06:57:57PM +0900, ts wrote:
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
On Fri, Jan 07, 2005 at 12:06:16AM +0900, ts wrote:
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
ts wrote:
[#4116] Test::Unit::Collector::Dir won't work with code that modifies $LOAD_PATH — Eric Hodel <drbrain@...7.net>
Any test code that depends upon modifications of $: fails when used
Hi,
On 11 Jan 2005, at 04:14, nobu.nokada@softhome.net wrote:
On 11 Jan 2005, at 09:39, Eric Hodel wrote:
On Sat, 15 Jan 2005 04:06:10 +0900, Eric Hodel <drbrain@segment7.net> wrote:
On Fri, 14 Jan 2005 23:48:58 -0500, Nathaniel Talbott
On Thu, 27 Jan 2005 17:17:14 -0500, Nathaniel Talbott
[#4146] The face of Unicode support in the future — Charles O Nutter <headius@...>
Hello Rubyists!
Hi,
Yukihiro Matsumoto <matz@ruby-lang.org> writes:
Paul Brannan <pbrannan@atdesk.com> writes:
Hi,
On Mon, Jan 10, 2005 at 11:53:48PM +0900, Yukihiro Matsumoto wrote:
Hi,
Yukihiro Matsumoto wrote:
Hi,
On Wed, Jan 12, 2005 at 02:13:35PM +0900, Yukihiro Matsumoto wrote:
Hi,
[#4189] Authenticated proxy support for open-uri — Neil Kohl <nakohl@...>
Hello!
[#4232] Carriage return on shebang — Florian Gro<florgro@...>
Moin.
[#4242] tracer.rb: Do not list pseudo source lines of binary extensions — Florian Gro<florgro@...>
Moin.
[#4243] Patch that enables https in open-uri.rb — Michael Neumann <mneumann@...>
Hi,
In article <41E93F42.9090705@ntecs.de>,
Tanaka Akira wrote:
[#4269] Re: The face of Unicode support in the future — Wes Nakamura <wknaka@...>
Hi,
Hi,
Yukihiro Matsumoto wrote:
Hi,
[#4296] parse_c.rb: allow whitespace after function names — Tilman Sauerbeck <tilman@...>
Hi,
Hi,
Yukihiro Matsumoto <matz@ruby-lang.org> [2005-01-21 17:43]:
[#4311] RFE: Enumerable#group_by, Array#^ — Florian Gro<florgro@...>
Moin.
[#4323] test/unit doesn't rescue a Exception — Tanaka Akira <akr@...17n.org>
test/unit doesn't rescue a Exception in a test method, as follows.
In article <87is5jb46q.fsf@serein.a02.aist.go.jp>,
On 9/1/06, Tanaka Akira <akr@fsij.org> wrote:
On Sep 2, 2006, at 6:34 PM, Nathaniel Talbott wrote:
In article <A604C0B3-95ED-4B9B-866C-79A2C7D5E3C4@segment7.net>,
On Sep 2, 2006, at 9:39 PM, Tanaka Akira wrote:
In article <622DAC7E-55DB-4854-B82B-A037CE9C75EF@segment7.net>,
In article <87ac5hv4bo.fsf@fsij.org>,
On Sep 3, 2006, at 8:21 AM, Tanaka Akira wrote:
[#4332] IO#clearerr missing in action — Eric Hodel <drbrain@...7.net>
I wanted to implement tail(1) in ruby cleanly, but found the best I
[#4335] When will Object#type disappear? — "David A. Black" <dblack@...>
Hi --
Re: Ruby/DL
Hi,
At Mon, 10 Jan 2005 23:05:17 +0900,
ts wrote in [ruby-core:04173]:
> n> Do you mean, in rb_dlsym_call(), the case that "to_ptr"
> n> conversion failed, and that copied strings for 's' arguments
> n> don't get freed?
>
> I've applied the patch
(snip)
> uln% ruby b.rb
> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
> ts 16531 0.0 0.0 9136 2408 pts/3 S 15:01 0:00 ruby b.rb
> ts 16531 23.0 0.0 14172 7460 pts/3 S 15:01 0:00 ruby b.rb
> ts 16531 45.0 0.1 18028 11316 pts/3 S 15:01 0:00 ruby b.rb
> ts 16531 66.0 0.1 22096 15384 pts/3 S 15:01 0:00 ruby b.rb
> ts 16531 87.0 0.2 25932 19220 pts/3 S 15:01 0:00 ruby b.rb
> ts 16531 99.9 0.2 29964 23252 pts/3 S 15:01 0:01 ruby b.rb
> ts 16531 64.5 0.3 33856 27144 pts/3 S 15:01 0:01 ruby b.rb
> ts 16531 75.5 0.3 37732 31020 pts/3 S 15:01 0:01 ruby b.rb
> ts 16531 86.5 0.4 41780 35068 pts/3 S 15:01 0:01 ruby b.rb
> ts 16531 97.0 0.4 45616 38904 pts/3 S 15:01 0:01 ruby b.rb
> ts 16531 71.6 0.5 49660 42948 pts/3 S 15:01 0:02 ruby b.rb
> ts 16531 79.0 0.5 53540 46828 pts/3 S 15:01 0:02 ruby b.rb
> ts 16531 86.0 0.6 57424 50712 pts/3 S 15:01 0:02 ruby b.rb
> ts 16531 93.3 0.6 61468 54756 pts/3 S 15:01 0:02 ruby b.rb
> ts 16531 75.5 0.7 65300 58588 pts/3 S 15:01 0:03 ruby b.rb
> ts 16531 81.0 0.7 69356 62644 pts/3 S 15:01 0:03 ruby b.rb
> ts 16531 86.5 0.8 73228 66516 pts/3 S 15:01 0:03 ruby b.rb
> ts 16531 92.0 0.8 77120 70408 pts/3 S 15:01 0:03 ruby b.rb
> ts 16531 97.5 0.9 81152 74440 pts/3 S 15:01 0:03 ruby b.rb
> ts 16531 82.4 0.9 84988 78276 pts/3 S 15:01 0:04 ruby b.rb
> ts 16531 86.8 1.0 89052 82340 pts/3 S 15:01 0:04 ruby b.rb
> ts 16531 91.2 1.0 92912 86200 pts/3 S 15:01 0:04 ruby b.rb
> ts 16531 95.4 1.1 96816 90104 pts/3 S 15:01 0:04 ruby b.rb
> ts 16531 83.1 1.1 100836 94124 pts/3 S 15:01 0:04 ruby b.rb
> ts 16531 86.8 1.2 104672 97960 pts/3 S 15:01 0:05 ruby b.rb
rb_dlsym_call() didn't free temporary argument lists.
Index: ext/dl/sym.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/sym.c,v
retrieving revision 1.27
diff -U2 -p -r1.27 sym.c
--- ext/dl/sym.c 21 Dec 2004 23:34:43 -0000 1.27
+++ ext/dl/sym.c 10 Jan 2005 14:43:21 -0000
@@ -267,10 +267,9 @@ rb_dlsym_inspect(VALUE self)
str_size = RSTRING(proto)->len + 100;
- str = dlmalloc(str_size);
- snprintf(str, str_size - 1,
+ val = rb_tainted_str_new(0, str_size);
+ snprintf(RSTRING(val)->ptr, str_size,
"#<DL::Symbol:0x%p func=0x%p '%s'>",
sym, sym->func, RSTRING(proto)->ptr);
- val = rb_tainted_str_new2(str);
- dlfree(str);
+ RSTRING(val)->len = strlen(RSTRING(val)->ptr);
return val;
@@ -467,5 +466,15 @@ rb_dlsym_call(int argc, VALUE argv[], VA
dargs = ALLOC_N(ANY_TYPE, sym->len - 1);
dtypes = ALLOC_N(int, sym->len - 1);
-#define FREE_ARGS {xfree(args); xfree(dargs); xfree(dtypes);}
+#define FREE_ARGS0 do {xfree(args); xfree(dargs); xfree(dtypes); } while (0)
+#define FREE_ARGS_PARTIAL do { \
+ do { \
+ if( dtypes[i] == 's' && ANY2S(args[i]) ){ \
+ dlfree((void *)ANY2S(args[i])); \
+ ANY2S(args[i]) = 0; \
+ } \
+ } while (++i <= sym->len - 2); \
+ FREE_ARGS0; \
+ } while (0)
+#define FREE_ARGS do {i = 0; FREE_ARGS_PARTIAL; } while (0)
for( i = sym->len - 2; i >= 0; i-- ){
@@ -490,4 +499,5 @@ rb_dlsym_call(int argc, VALUE argv[], VA
pval = rb_funcall(argv[i], rb_intern("to_ptr"), 0);
if( !rb_obj_is_kind_of(pval, rb_cDLPtrData) ){
+ FREE_ARGS_PARTIAL;
rb_raise(rb_eDLTypeError, "unexpected type of argument #%d", i);
}
@@ -596,5 +606,5 @@ rb_dlsym_call(int argc, VALUE argv[], VA
break;
default:
- FREE_ARGS;
+ FREE_ARGS_PARTIAL;
rb_raise(rb_eDLTypeError,
"unknown type '%c' of the return value.",
@@ -923,9 +933,10 @@ rb_dlsym_call(int argc, VALUE argv[], VA
});
dlfree((void*)ANY2S(args[i]));
+ ANY2S(args[i]) = 0;
break;
default:
{
char c = dtypes[i];
- FREE_ARGS;
+ FREE_ARGS_PARTIAL;
rb_raise(rb_eRuntimeError, "unknown argument type '%c'", i, c);
}
@@ -942,5 +953,8 @@ rb_dlsym_call(int argc, VALUE argv[], VA
}
+ FREE_ARGS0;
#undef FREE_ARGS
+#undef FREE_ARGS0
+#undef FREE_ARGS_PARTIAL
return rb_assoc_new(val,dvals);
}
--
Nobu Nakada