[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#14254: 24.3; read-number fails to recognize faulty numbers (string-t
From: |
Juri Linkov |
Subject: |
bug#14254: 24.3; read-number fails to recognize faulty numbers (string-to-number to blame) |
Date: |
Tue, 07 May 2013 11:42:41 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) |
>>> `call-interactively' doesn't use `read-number'. It duplicates code
>>> from `read-number' with a similar loop to re-read non-numbers.
>>
>> Could you try and see if/how the C code could be changed to just call
>> the Elisp function?
>
> === modified file 'src/callint.c'
> --- src/callint.c 2013-02-27 07:42:43 +0000
> +++ src/callint.c 2013-04-25 20:41:12 +0000
> [...]
> - visargs[i] = args[i];
> + args[i] = call1 (Qread_number, callint_message);
> break;
I should have mentioned that original code contained the line
visargs[i] = args[i];
but I omitted it in the change since it has no effect
because this code at the end of `Fcall_interactively'
for (i = 1; i < nargs; i++)
{
if (varies[i] > 0)
visargs[i] = Fcons (intern (callint_argfuns[varies[i]]), Qnil);
else
visargs[i] = quotify_arg (args[i]);
}
overwrites elements of `visargs' anyway. I don't understand why
`Fcall_interactively' contains many lines of such useless code as
visargs[i] = last_minibuf_string;
If the intention was to collect strings in `visargs' and use them later
then old code for numbers (currently still useless) was wrong,
it should convert numbers to strings with something like
visargs[i] = Fnumber_to_string(args[i]);
- bug#14254: 24.3; read-number fails to recognize faulty numbers (string-to-number to blame),
Juri Linkov <=