mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-23 13:21:43 +08:00
Fix sometimes-uninitialized warning in gdbscm_value_address
I am getting this warning with clang: /home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:439:11: error: variable 'address' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] if (res_val != NULL) ^~~~~~~~~~~~~~~ /home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:444:32: note: uninitialized use occurs here if (gdbscm_is_exception (address)) ^~~~~~~ /home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:439:7: note: remove the 'if' if its condition is always true if (res_val != NULL) ^~~~~~~~~~~~~~~~~~~~ /home/emaisin/src/binutils-gdb/gdb/guile/scm-value.c:427:18: note: initialize the variable 'address' to silence this warning SCM address; ^ = nullptr We can get rid of it with a small refactoring. I think it's a bit cleaner/safer to initialize address with a pessimistic value and assign it on success. Then there's no chance of using it uninitialized. If I understand correctly, the NULL check on res_val was to check whether value_addr threw, and that if value_addr returns without throwing, the result will never be NULL. If that's true, we can skip the res_val variable. Tested by running gdb.guile/*.exp locally. gdb/ChangeLog: * guile/scm-value.c (gdbscm_value_address): Initialize address, get rid of res_val.
This commit is contained in:
parent
4fa7574eec
commit
432ae719d3
@ -1,3 +1,8 @@
|
||||
2017-09-21 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* guile/scm-value.c (gdbscm_value_address): Initialize address,
|
||||
get rid of res_val.
|
||||
|
||||
2017-09-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* configure.nat <i386sol2,i386>: Add fork-inferior.o to NATDEPFILES.
|
||||
|
@ -421,24 +421,19 @@ gdbscm_value_address (SCM self)
|
||||
|
||||
if (SCM_UNBNDP (v_smob->address))
|
||||
{
|
||||
struct value *res_val = NULL;
|
||||
struct cleanup *cleanup
|
||||
= make_cleanup_value_free_to_mark (value_mark ());
|
||||
SCM address;
|
||||
SCM address = SCM_BOOL_F;
|
||||
|
||||
TRY
|
||||
{
|
||||
res_val = value_addr (value);
|
||||
address = vlscm_scm_from_value (value_addr (value));
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
{
|
||||
address = SCM_BOOL_F;
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (res_val != NULL)
|
||||
address = vlscm_scm_from_value (res_val);
|
||||
|
||||
do_cleanups (cleanup);
|
||||
|
||||
if (gdbscm_is_exception (address))
|
||||
|
Loading…
Reference in New Issue
Block a user