Buggy sbspace() on 64bit builds?

Simon J. Gerraty sjg at juniper.net
Sat Feb 7 01:18:09 UTC 2015


Anuranjan Shukla <anshukla at juniper.net> wrote:
> this, along with return value being 'int' acceptable as a final
> determination? 

It is ok for the function to return long, 
so long as an int is used internally.
Casting the int to long - implicit on return does no harm.

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int
main(int argc, char *argv[])
{
    uint a, b;
    long r1;
    int r2;

    a = 1;
    b = 2;

    r1 = a - b;
    r2 = a - b;

    printf("r1=%ld\nr2=%d\nr3=%ld\n", r1, r2, (long)r2);
    exit(0);
}

r1=4294967295
r2=-1
r3=-1

so I think just using 'int' internally should work for now,
perhaps with a comment saying the object size should match
those being subtracted etc.


More information about the freebsd-arch mailing list