[nanomsg] Fixing compiler warnings regarding type conversions

  • From: Immanuel Weber <immanuel.weber@xxxxxxxxx>
  • To: nanomsg@xxxxxxxxxxxxx
  • Date: Tue, 1 Oct 2013 11:53:56 +0200

Hi all,

I started to fix some compiler warnings regarding type conversions.
At some points I'm a bit confused, like the following:
"nanomsg\src\protocols\utils\dist.c(86): warning C4267: 'Funktion':
Konvertierung von 'size_t' nach 'uint32_t', Datenverlust möglich"
The call stack (with the typ of the number of copies) is like this:
nn_msg_bulkcopy: uint32_t
nn_chunkref_bulkcopy: uint32_t
nn_chunkref_addref: int
nn_atomic_inc: uint32_t

Which leads to these conversions (including changes in signedness): size_t
-> uint32_t -> uint32_t -> int -> uint32_t.
And size_t is 8 bytes on x64 instead of 4 bytes on x86 machines. There are
a few situations like that.
Martin, I know that you pointed out the way with nn_assertions, to check
wether values are within limits, but I think a more plattform adapting
solution would be better. One, where only in situations where different
type sizes would prevent communication between x86 applications and x64
applications, a least common type would be used. If that can happen at all.
I know that this claim maybe a little bit bold, as I'm no expert and far
away from understanding nanomsg, but I think consistent typing helps a lot.
In the mentioned situation above, I would use size_t all the way down.
Any thoughts on that?

Greetings
Immanuel

Other related posts: