[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-trivial] [PATCH for-2.10] Use qemu_tolower() and qemu_toupper(
From: |
Peter Maydell |
Subject: |
Re: [Qemu-trivial] [PATCH for-2.10] Use qemu_tolower() and qemu_toupper(), not tolower() and toupper() |
Date: |
Thu, 20 Jul 2017 22:03:14 +0100 |
On 20 July 2017 at 19:26, Richard Henderson <address@hidden> wrote:
> On 07/20/2017 06:31 AM, Peter Maydell wrote:
>>
>> gdbstub.c:914:13: warning: array subscript has type 'char'
>>
>> This reflects the fact that toupper() and tolower() give
>> undefined behaviour if they are passed a value that isn't
>> a valid 'unsigned char' or EOF.
>
>
> Not saying we shouldn't use qemu_tolower etc, but this statement is not true
> at all. Officially, the argument to toupper and tolower is type int.
(I was going to quote POSIX here but I see Eric has done so already.)
> This sounds like a bug in NetBSD -- though it may not even be that, as they
> may have done something clever and put the symbol in the middle of the data.
> A trick that worked before compiler warnings got smarter.
https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/ctype_inline.h
The implementation is
#define toupper(c) ((int)((_toupper_tab_ + 1)[(c)]))
(where I assume _toupper_tab_ is the obvious array.)
thanks
-- PMM
Re: [Qemu-trivial] [PATCH for-2.10] Use qemu_tolower() and qemu_toupper(), not tolower() and toupper(), David Gibson, 2017/07/20
Re: [Qemu-trivial] [Qemu-devel] [PATCH for-2.10] Use qemu_tolower() and qemu_toupper(), not tolower() and toupper(), Peter Maydell, 2017/07/21