apr_table_setに文字列以外を放り込んでみたら

Apache APIには、apr_table_get/apr_table_setというのがある。
内部テーブルに key=valueの形式で値を保持しておけるので、各フェーズでのハンドラで情報を共有できたりします。*1
グローバル変数はマルチスレッドとかでほげほげなのでご法度です)


apr_table_set(r->notes, "hige", apr_strdup("pon"));
こんな感じで、セットする。


それなりに便利なのですが、いけてない所がひとつあって、保持できるのが文字列のみなのです。
この仕組みに無理やり、整数をセットしたらセグフォしました。
apr_table_set(r->notes, "hoge", (char*)0x12345678);


セグフォするということは、このテーブルはポインタを管理しているだけでなく、セット時に文字列コピーが発生しているということなんだろうなぁ。


というわけで、泣く泣く atoi, itoa, sprintfですよ(ぉ


追記:大御所様からつっこみが

apr_table_setn !!!!キタコレ!!
内部コピーが発生しない代わりに、変数のスコープ考えやがれバージョン。
これは使えそう。

*1:要素は線形に探索されるのでパフォーマンス注意