GNU sed on AIX (その3)
2回目のサイズ0のmalloc()でabortするように仕込んで、どこでエラーが出たか調べてみた。
というときに、なんか急に思い出した。0バイトのmalloc()。思い出したというか、なんかそういう話があったなというのを思い出しただけでどうしてかとか思い出せない。どこでみたんだっけかな。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { char *p=NULL; p = (char*)malloc(0); printf("%p\n", p); return 0; }
こんなことすると、Linuxだと値が入る。でもAIXだと0が返る。だからsedがMalloc exhaustedのエラーを返せる(今回はre_node_set_alloc()という関数の中)。これはsedの見えないバグなのかな?とすると何でmalloc()に渡すサイズが0になる理由を調べなきゃいけないのかな。あけてはいけない箱のふたあけた気がしてきた。