meson: C type error in strtod_l/strtof_l probe

Future compilers will fail compilation due to the C type error:

…/testfile.c: In function 'main':
…/testfile.c:12:30: error: passing argument 2 of 'strtod_l' from incompatible pointer type
   12 |       double d = strtod_l(s, end, loc);
      |                              ^~~
      |                              |
      |                              char *
/usr/include/stdlib.h:416:43: note: expected 'char ** restrict' but argument is of type 'char *'
  416 |                         char **__restrict __endptr, locale_t __loc)
      |                         ~~~~~~~~~~~~~~~~~~^~~~~~~~
…/testfile.c:13:29: error: passing argument 2 of 'strtof_l' from incompatible pointer type
   13 |       float f = strtof_l(s, end, loc);
      |                             ^~~
      |                             |
      |                             char *
/usr/include/stdlib.h:420:42: note: expected 'char ** restrict' but argument is of type 'char *'
  420 |                        char **__restrict __endptr, locale_t __loc)
      |                        ~~~~~~~~~~~~~~~~~~^~~~~~~~


This means that the probe no longer tests is objective and always
fails.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26927>
This commit is contained in:
Florian Weimer 2024-01-08 13:29:57 +01:00 committed by Marge Bot
parent fddd866b27
commit 0319789331

View file

@ -1455,8 +1455,8 @@ if cc.links('''
locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL); locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
const char *s = "1.0"; const char *s = "1.0";
char *end; char *end;
double d = strtod_l(s, end, loc); double d = strtod_l(s, &end, loc);
float f = strtof_l(s, end, loc); float f = strtof_l(s, &end, loc);
freelocale(loc); freelocale(loc);
return 0; return 0;
}''', }''',