diff options
author | Mike Frysinger <vapier@gentoo.org> | 2015-11-21 23:10:04 -0800 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-11-22 02:15:28 -0500 |
commit | 2561d5808a330240a28841e8b3ce706a65ed31c9 (patch) | |
tree | 487875e6a4fa55deb3694d629983a9006d9f8a59 /sim | |
parent | 7c125e3b10ac6f9222d24c76cdf31a5a9ec8dae0 (diff) | |
download | gdb-2561d5808a330240a28841e8b3ce706a65ed31c9.zip gdb-2561d5808a330240a28841e8b3ce706a65ed31c9.tar.gz gdb-2561d5808a330240a28841e8b3ce706a65ed31c9.tar.bz2 |
sim: sim_do_commandf: fix call to va_end [PR sim/19273]
Make sure we call va_end even in the error case.
Diffstat (limited to 'sim')
-rw-r--r-- | sim/common/ChangeLog | 6 | ||||
-rw-r--r-- | sim/common/sim-utils.c | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 464fd80..1b21995 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,5 +1,11 @@ 2015-11-21 Mike Frysinger <vapier@gentoo.org> + PR sim/19273 + * sim-utils.c (sim_do_commandf): Declare ret. Call va_start, + vasprintf, and va_end together. Check ret after va_end call. + +2015-11-21 Mike Frysinger <vapier@gentoo.org> + * sim-types.h (SIM_PRI_TB): Define. (PRI_TW, PRIiTW, PRIxTW): New PRI target word defines. (PRI_TA, PRIiTA, PRIxTA): New PRI target address defines. diff --git a/sim/common/sim-utils.c b/sim/common/sim-utils.c index 63d532d..c6f96a8 100644 --- a/sim/common/sim-utils.c +++ b/sim/common/sim-utils.c @@ -328,15 +328,20 @@ sim_do_commandf (SIM_DESC sd, { va_list ap; char *buf; + int ret; + va_start (ap, fmt); - if (vasprintf (&buf, fmt, ap) < 0) + ret = vasprintf (&buf, fmt, ap); + va_end (ap); + + if (ret < 0) { sim_io_eprintf (sd, "%s: asprintf failed for `%s'\n", STATE_MY_NAME (sd), fmt); return; } + sim_do_command (sd, buf); - va_end (ap); free (buf); } |