Re: [dev] Re: [slstatus] temperature module acts wierd on OpenBSD

From: Mattias Andrée <maandree_AT_kth.se>
Date: Tue, 16 Jun 2020 20:53:34 +0200

I'm assuming temp.value i an `int`, as %d is used. The problem was
probably that `1E6` is actually a `double` rather than an `int`,
as the whole expression is promoted to `double`, because `bprintf` is
(I assume) variadic, and the compiler does not know to change the
cast the expression back to `int` because only the type of the first
argument is specified in its declaration.


Regards,
Mattias Andrée


On Tue, 16 Jun 2020 20:42:08 +0200
Laslo Hunhold <dev_AT_frign.de> wrote:

> On Tue, 16 Jun 2020 17:55:03 +0000
> messw1thdbest <messw1thdbest_AT_protonmail.ch> wrote:
>
> Dear messw1thdbest,
>
> > < return bprintf("%d", (temp.value - 273150000) / 1E6);
> > ---
> > > return bprintf("%d", (temp.value - 273150000)/1000000);
>
> I'm really intrigued by that; thanks for sending in this patch! What is
> the origin of this problem? Does this have something to do with
> guaranteed constant-sizes in Posix?
>
> With best regards
>
> Laslo Hunhold
>
Received on Tue Jun 16 2020 - 20:53:34 CEST

This archive was generated by hypermail 2.3.0 : Tue Jun 16 2020 - 21:00:08 CEST