Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Feb 2015 17:03:44 -0800
From:      "Simon J. Gerraty" <sjg@juniper.net>
To:        Anuranjan Shukla <anshukla@juniper.net>
Cc:        "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>
Subject:   Re: Buggy sbspace() on 64bit builds?
Message-ID:  <5977.1423271024@chaos>
In-Reply-To: <D0FA7C7B.249B1%anshukla@juniper.net>
References:  <D0F95E21.2489D%anshukla@juniper.net> <20150206183036.S1246@besplex.bde.org> <D0FA7C7B.249B1%anshukla@juniper.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Anuranjan Shukla <anshukla@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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5977.1423271024>