[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: egcs bug?
筒井です。
<199902081254.VAA18517@ruri.iri.co.jp>の記事において
tsubai@iri.co.jpさんは書きました。
> NFS mount で df の表示がおかしくなる件ですが、OpenBSDのように
> こうすれば直るみたいです。
再びこの件ですが、ふと気づいて define を次のように修正したところ
コード自体は変更しなくても直るみたいです。
--- sys/nfs/xdr_subs.h.orig Mon Mar 1 22:43:36 1999
+++ sys/nfs/xdr_subs.h Mon Mar 1 22:48:56 1999
@@ -97,13 +97,13 @@
((struct nfsv3_time *)(t))->nfsv3_nsec = htonl((f)->tv_nsec); \
}
-#define fxdr_hyper(f, t) { \
+#define fxdr_hyper(f, t) do { \
((int32_t *)(t))[_QUAD_HIGHWORD] = ntohl(((int32_t *)(f))[0]); \
((int32_t *)(t))[_QUAD_LOWWORD] = ntohl(((int32_t *)(f))[1]); \
-}
-#define txdr_hyper(f, t) { \
+}while(0)
+#define txdr_hyper(f, t) do { \
((int32_t *)(t))[0] = htonl(((int32_t *)(f))[_QUAD_HIGHWORD]); \
((int32_t *)(t))[1] = htonl(((int32_t *)(f))[_QUAD_LOWWORD]); \
-}
+}while(0)
#endif
---
> これって strtod() と同じかな? -O1 なら発現しないし。
> (誰か、どこが ANSI-C 的にいけなかったのかおしえてくれるとうれしい:-)
ということで ANSI-C には反してないけど、
> # きっと txdr_hyper も直さなきゃいけない。
複数行にわたる define は全部 do{}while(0) しなきゃいけない?
---
tsutsui@ceres.dti.ne.jp