MacOSXでのsnprintf挙動への追記

参考:http://d.hatena.ne.jp/kt-blackout/20040622#p1

上記の日記でMacOSXの[v]snprintfの最初の二つの引数にNULL, 0を与えると-1を返すと書いたが、これはMacOSX 10.2での話。最近MacOSX 10.3にしたのだが、こちらでは[v]snpritnfはメモリが足りなくても、「メモリが足りれば書き込まれたであろう値」を返すようになった。つまり以下のコードでは"len : 2"と表示される。

#include 

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

いま、このコードでlenが-1になる環境はどんなのがあるんだろう? いまのところMacOSX 10.2しか見当たらない*1。これに依存するのはありなのか、なしなのか。

*1:sourceforgeコンパイルファームでも実験した