[PHP-dev 959]Re: Signal11で落ちる(php-src/ext/standard/
NAKAMURA Takeshi
1yen @ sh.rim.or.jp
2003年 12月 24日 (水) 15:27:43 JST
仲村です。
原因が同じ所にあるのに、対処が2箇所に分かれるのはどう考えても
汚いので、デリミタの直後が行末だと、値が返らないことを利用して
行末に番兵を立てるようにしました。Bug を利用しちゃいけないとは
思いつつ、Bug も仕様ということで...
===================================================================
diff -u file.c.orig file.c
--- file.c.orig Wed Dec 24 10:51:27 2003
+++ file.c Wed Dec 24 13:01:34 2003
@@ -2263,6 +2263,7 @@
/* strip trailing spaces */
while (--e >= s && isspace((int)*(unsigned char *)(e)) && *e != delimiter);
e++;
+ *(e++) = delimiter; /* sentinel */
array_init(return_value);
===================================================================
On Wed, 24 Dec 2003 08:24:36 +0900,
NAKAMURA Takeshi <1yen @ sh.rim.or.jp> wrote:
> とりあえず、動くのを書きましたが、
> 空行を読む動作はまだ良いとして... まともなプログラム希望。
> # 久しぶりに ddd とか、関数名を探すために始めて cc -S とか使いました。
>
> On Tue, Dec 23, 2003 at 09:45:33PM +0900,
> NAKAMURA Takeshi wrote:
>
>>> ただ、空行があるとそれから先を読まなかったり
>>> 「文字,文字,文字,」と、デリミタのすぐ後が行末だと ("文字","文字","文字")
>>> と、3つしか帰ってこないようです。
>>> 空行の後もそのまま読んだり、("文字","文字","文字","") と、4つ
>>> 返すことはできないでしょうか?
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
仲村 武 <1yen @ sh.rim.or.jp>
while ((p = memchr(s, delimiter, (e - s)))) を
while ((e - s) >=0 ) として while の中で判断したいと思ったのですが
Bus error や、FATAL: emalloc(): Unable to allocate と言われ続け
力尽きました。
PHP-dev メーリングリストの案内