おい、Macよ

Macさんが、嫌な挙動を見せてくれた。

#include 

int
main(int argc, char *argv[])
{
    int len;
    len = snprintf(NULL, 0, "OK");
    printf("len : %d\n", len);
    return 1;
}

これをLinuxで実行すると

len : 2

となる。しかし、MacOSXだと

len : -1

となる。困った。manさんいわく、glibc2.0.6以下はメモリが足りないと-1を返す仕様らしいので、仕方ない。とりあえず、これに依存したコードはMacOSXでは暴走する。痛い。これに依存したコードはあまり無いのだけど、Cでの自作文字列構造体の操作関数では使ってるんだよな。自分で、必要なメモリを数えるしかないのかな。めんどくさ。