Date: Sat, 7 Feb 2015 18:09:47 +1100 (EST) From: Bruce Evans <brde@optusnet.com.au> To: "Simon J. Gerraty" <sjg@juniper.net> Cc: Anuranjan Shukla <anshukla@juniper.net>, "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org> Subject: Re: Buggy sbspace() on 64bit builds? Message-ID: <20150207180005.F1334@besplex.bde.org> In-Reply-To: <5977.1423271024@chaos> References: <D0F95E21.2489D%anshukla@juniper.net> <20150206183036.S1246@besplex.bde.org> <D0FA7C7B.249B1%anshukla@juniper.net> <5977.1423271024@chaos>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 6 Feb 2015, Simon J. Gerraty wrote: > 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. Yes, that is simplest. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150207180005.F1334>