https://bugs.documentfoundation.org/show_bug.cgi?id=154285
Bug ID: 154285
Summary: IsNumeric(1,2) returns True, must produce an error
Product: LibreOffice
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: difficultyBeginner, easyHack, skillCpp
Severity: normal
Priority: medium
Component: BASIC
Assignee: [email protected]
Reporter: [email protected]
IsNumeric (and some other Basic run-time functions) does not fail when called
with more arguments than it takes. E.g., this gives True:
IsNumeric(1,2)
The problem is not only strict correctness: people might actually confuse this
notation for testing of a "one and two tenths", while actually it's two integer
arguments passed to the function, and the second argument is simply ignored.
See e.g. bug 123158 comment 8.
The task is to check all the functions in basic/source/runtime/methods.cxx and
basic/source/runtime/methods1.cxx, locate all the function implementations that
do not check the upper bound of the number of arguments passed to them (in case
of IsNumeric, the implementation would be SbRtl_IsNumeric), check if these
functions indeed allow passing arbitrary number of arguments (an example of
such a function, that can rightfully take unlimited number of arguments, is
Array(), and its implementation SbRtl_Array), and for all functions that
*can't* take arbitrary number of arguments, introduce respective check setting
an error.
Every fixed function must have a separate commit, in case when it causes a
regression that requires a revert (who knows). So this is an easyhack which can
be done in parallel, by several people.
--
You are receiving this mail because:
You are the assignee for the bug.