[#413] Should we check alloca ret val? — Michal Rokos <m.rokos@...>
Hi,
7 messages
2002/09/03
[#441] Patch to add a Module#const_missing method — JanArne.Petersen@... (Jan Arne Petersen)
Hi,
11 messages
2002/09/05
[#443] Re: Patch to add a Module#const_missing method
— matz@... (Yukihiro Matsumoto)
2002/09/06
Hi,
[#444] io_write()/fwrite() and EINTR on Solaris — Jos Backus <jos@...>
I am encountering a problem similar to the one mentioned here,
19 messages
2002/09/06
[#453] Re: io_write()/fwrite() and EINTR on Solaris
— nobu.nokada@...
2002/09/08
Hi,
[#454] Re: io_write()/fwrite() and EINTR on Solaris
— matz@... (Yukihiro Matsumoto)
2002/09/09
Hi
[#469] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/09/09
On Mon, Sep 09, 2002 at 03:55:13PM +0900, Yukihiro Matsumoto wrote:
[#479] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/09/10
On Tue, Sep 10, 2002 at 01:04:10AM +0900, Jos Backus wrote:
[#492] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/09/21
On Wed, Sep 11, 2002 at 02:23:33AM +0900, Jos Backus wrote:
[#495] Re: io_write()/fwrite() and EINTR on Solaris
— nobu.nokada@...
2002/09/21
Hi,
[#496] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/09/21
Hello,
[#564] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/11/06
On Sun, Sep 22, 2002 at 04:24:31AM +0900, Jos Backus wrote:
[#566] Re: io_write()/fwrite() and EINTR on Solaris
— nobu.nokada@...
2002/11/07
Hi,
[#567] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/11/07
On Thu, Nov 07, 2002 at 01:43:03PM +0900, nobu.nokada@softhome.net wrote:
[#568] Re: io_write()/fwrite() and EINTR on Solaris
— nobu.nokada@...
2002/11/07
Hi,
[#569] Re: io_write()/fwrite() and EINTR on Solaris
— Jos Backus <jos@...>
2002/11/07
On Thu, Nov 07, 2002 at 03:49:51PM +0900, nobu.nokada@softhome.net wrote:
[#449] ruby.h, string.c — Michal Rokos <m.rokos@...>
Hello,
7 messages
2002/09/06
[#459] Parse.y — Michal Rokos <m.rokos@...>
Hi,
6 messages
2002/09/09
[#461] Related to [Memleak] in sprintf.c — Michal Rokos <m.rokos@...>
Hi,
5 messages
2002/09/09
[#508] can java applications invoke ruby scripts?? — "John Davis" <javaccnews@...>
I want to know if Java applications can invoke ruby scripts?? In other
8 messages
2002/09/26
[Memleak] in sprintf.c
From:
Michal Rokos <m.rokos@...>
Date:
2002-09-09 09:15:13 UTC
List:
ruby-core #460
Hi,
problem is that buf is sometimes not freed.
--- ../ruby-09-06/sprintf.c Fri Sep 6 20:55:37 2002
+++ sprintf.c Sat Sep 7 19:37:00 2002
@@ -140,6 +140,7 @@ rb_f_sprintf(argc, argv)
retry:
switch (*p) {
default:
+ free(buf);
if (ISPRINT(*p))
rb_raise(rb_eArgError, "malformed format string - %%%c", *p);
else
@@ -178,6 +179,7 @@ rb_f_sprintf(argc, argv)
n = 10 * n + (*p - '0');
}
if (p >= end) {
+ free(buf);
rb_raise(rb_eArgError, "malformed format string - %%[0-9]");
}
if (*p == '$') {
@@ -191,6 +193,7 @@ rb_f_sprintf(argc, argv)
case '*':
if (flags & FWIDTH) {
+ free(buf);
rb_raise(rb_eArgError, "width given twice");
}
@@ -205,6 +208,7 @@ rb_f_sprintf(argc, argv)
case '.':
if (flags & FPREC) {
+ free(buf);
rb_raise(rb_eArgError, "precision given twice");
}
flags |= FPREC;
@@ -224,6 +228,7 @@ rb_f_sprintf(argc, argv)
prec = 10 * prec + (*p - '0');
}
if (p >= end) {
+ free(buf);
rb_raise(rb_eArgError, "malformed format string - %%.[0-9]");
}
goto retry;
@@ -233,6 +238,7 @@ rb_f_sprintf(argc, argv)
case '\0':
case '%':
if (flags != FNONE) {
+ free(buf);
rb_raise(rb_eArgError, "illegal format character - %%");
}
PUSH("%", 1);
=======================================================================
PS: Please note that it leaks when exception is raised!
Example:
@@ -335,12 +341,12 @@ rb_f_sprintf(argc, argv)
bin_retry:
switch (TYPE(val)) {
case T_FLOAT:
- val = rb_dbl2big(RFLOAT(val)->value);
+ val = rb_dbl2big(RFLOAT(val)->value); /* FIXME: MemLeak when exc. is raised */
if (FIXNUM_P(val)) goto bin_retry;
bignum = 1;
break;
case T_STRING:
- val = rb_str_to_inum(val, 0, Qtrue);
+ val = rb_str_to_inum(val, 0, Qtrue); /* FIXME: ditto */
goto bin_retry;
case T_BIGNUM:
bignum = 1;
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Michal Rokos Czech Technical University, Prague
E-mail:m.rokos@sh.cvut.cz ICQ:36118339 Jabber:majkl@jabber.cz
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-