[PATCH]: Portability fixes
Alan Bateman
Alan.Bateman at Sun.COM
Wed Jan 28 21:52:44 UTC 2009
Martin Buchholz wrote:
> Christos, thanks for the bug report.
>
> For low level code like this, it's almost always a mistake
> (my mistake, that is; I am the author)
> to use the locale-dependent functions like isdigit.
> Still, I am surprised to see a real failure with isdigit(negative char).
>
> I prefer the following fix for UNIXProcess_md.c:
> (and would be willing to submit it on Christos' behalf)
>
> (I'm not going to comment on the changes to AddressImpl.c,
> except to suggest considering ASCII-specific functions as well.)
>
> diff --git a/src/solaris/native/java/lang/UNIXProcess_md.c
> b/src/solaris/native/java/lang/UNIXProcess_md.c
> --- a/src/solaris/native/java/lang/UNIXProcess_md.c
> +++ b/src/solaris/native/java/lang/UNIXProcess_md.c
> @@ -260,6 +260,12 @@
> }
>
> static int
> +isAsciiDigit(char c)
> +{
> + return c >= '0' && c <= '9';
> +}
> +
> +static int
> closeDescriptors(void)
> {
> DIR *dp;
> @@ -284,7 +290,7 @@
> */
> while ((dirp = readdir64(dp)) != NULL) {
> int fd;
> - if (isdigit(dirp->d_name[0]) &&
> + if (isAsciiDigit(dirp->d_name[0]) &&
> (fd = strtol(dirp->d_name, NULL, 10)) >= from_fd + 2)
> close(fd);
> }
>
>
> Martin
This looks good to me too. I've created a bug to track this:
6798822: (process) Non-portable use of isdigit in
src/solaris/native/java/lang/UNIXProcess_md.c
We should forward the portability issues with the networking code to
net-dev.
-Alan.
More information about the core-libs-dev
mailing list