From 0fc982e4a8e2ef78bd46122a08fb630bc684a56d Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sat, 5 Aug 2006 12:04:27 +0000 Subject: Bug fix: mixvm's smem correctly handles negative zero git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-11 --- mixlib/xmix_vm_handlers.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mixlib/xmix_vm_handlers.c b/mixlib/xmix_vm_handlers.c index 5fcd209..4ebfc77 100644 --- a/mixlib/xmix_vm_handlers.c +++ b/mixlib/xmix_vm_handlers.c @@ -663,6 +663,7 @@ cmd_smem_ (mix_vm_cmd_dispatcher_t *dis, const gchar *carg) glong value = 0; int k = 0; gchar *arg = NULL; + mix_word_t wval; if (ok) { @@ -679,6 +680,12 @@ cmd_smem_ (mix_vm_cmd_dispatcher_t *dis, const gchar *carg) { while (isspace (arg[k])) k++; value = atol (arg + k); + + if ((value == 0) && (arg[k] == '-')) + wval = MIX_WORD_MINUS_ZERO; + else + wval = mix_word_new (value); + if ( arg[k] == '+' || arg[k] == '-' ) k++; while (isdigit (arg[k])) k++; ok = arg[k] == '\0'; @@ -686,12 +693,14 @@ cmd_smem_ (mix_vm_cmd_dispatcher_t *dis, const gchar *carg) } if (ok) - mix_vm_set_addr_contents (dis->vm, mix_short_new (addr), - mix_word_new (value)); + { + mix_vm_set_addr_contents (dis->vm, mix_short_new (addr), wval); + } else { log_error_ (dis, _("Invalid argument: %s"), arg); } + if (arg) g_free (arg); return ok; -- cgit v1.2.3