meson: Check rres.compiled() before calling rres.returncode()

As per meson spec, returncode() produces unspecified data if
compiled() == false. Check compiled() first to avoid relying
upon unspecified data.

In addition, muon -- an implemetation of meson written in C goes
further and forbids returning unspecified data. This is a good
decision, but also makes it harder to support applications which
wrongly use meson API. Therefore, application needs to be fixed.
This commit is contained in:
illiliti 2022-05-06 23:27:03 +03:00
parent 5ea0ecf8c7
commit 07fb19ee6e
2 changed files with 3 additions and 3 deletions

View File

@ -30,7 +30,7 @@ if g_module_impl == 'G_MODULE_IMPL_DL'
rres = cc.run(dlopen_dlsym_test_code,
dependencies : libdl_dep,
name : 'dlsym() preceding underscores')
if host_system == 'windows' or rres.returncode() == 0
if host_system == 'windows' or (rres.compiled() and rres.returncode() == 0)
g_module_need_uscore = 1
endif
else

View File

@ -1714,7 +1714,7 @@ va_list_val_copy_prog = '''
if cc_can_run
rres = cc.run(va_list_val_copy_prog, name : 'va_lists can be copied as values')
glib_va_val_copy = rres.returncode() == 0
glib_va_val_copy = rres.compiled() and rres.returncode() == 0
else
glib_va_val_copy = meson.get_cross_property('va_val_copy', true)
endif
@ -1993,7 +1993,7 @@ stack_grows_check_prog = '''
if cc_can_run
rres = cc.run(stack_grows_check_prog, name : 'stack grows check')
growing_stack = rres.returncode() == 0
growing_stack = rres.compiled() and rres.returncode() == 0
else
growing_stack = meson.get_cross_property('growing_stack', false)
endif