ruby/ext/socket のバグ?

ruby 1.8.7-p72(mswin32)+WEBrick で、LAN 向けの nslookup Web サービスを構築していたところ、socket ライブラリの不思議な挙動に気付いた。
ホスト名からホストの情報を取得する関数である gethostbyname は IPアドレスを与えても逆引きを行わない。IPアドレスからの逆引きを行うには、代わりに gethostbyaddr や、getnameinfo を呼び出す必要がある。しかし、Winsock では、何故か、逆引きで得られるホスト名を返してくれるようなのだ。
アドレスとホスト名を区別せずに実装できる!と喜んで実装したのはいいものの、テストに掛けてみると、何故か、幾つかの IP アドレスが逆引きできない。
ええ、どういうことなの・・・?
逆引き出来なかった IP アドレスを並べて暫く考えていると、ある共通性に気付いた。どれも最下位オクテットが 224 になっている。えーっと、IP アドレスで 224 といえば・・・そう、マルチキャストアドレスだ。しかし、マルチキャストアドレスは最上位オクテットが 224 のアドレスであって最下位オクテットではない。
じゃあ、マルチキャストアドレスとこの現象に何の関係が・・・?
ブラックボックスの外からあれこれ考えても、これ以上何も出てきそうになかったので、ソースコードを訪ねてみた。
Socket のソースコードruby/ext/socket/ ・・・っと。追ってみると、getaddrinfo.c で興味深い記述を見つけた。

switch (afdl[i].a_af) {
case AF_INET:
        v4a = ((struct in_addr *)pton)->s_addr;
        if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))
                pai->ai_flags &= ~AI_CANONNAME;

v4a がマルチキャストアドレスなら何かフラグを倒す分岐がある。IN_MULTICAST が受け付けるアドレスはホストバイトオーダーらしいので、v4a がホストバイトオーダーじゃないと正しく分岐されない。
さて、その v4a は、このコードの前にある inet_pton なる関数によって得られた in_addr 構造体データから抽出されている。inet(3) FreeBSDドキュメントJManによると、inet_pton はネットワークバイトオーダーでアドレスを返すことになっているようだ。
ということは、ネットワークバイトオーダー≠ホストバイトオーダーの環境では、最下位オクテットが224のとき、このコードは間違って分岐してしまうことになる・・・?
ためしに、バイトオーダーを逆にして使ってみると、意図した通りに動作してくれた。
いや・・・そんな間違いがあるはずがない!きっと思い違いだ・・・1999年からこのコードだから、間違っていたら誰か修正しているだろうし・・・