https://bugs.documentfoundation.org/show_bug.cgi?id=130476
Bug ID: 130476
Summary: BASIC: Data Type Characters with literals don't affect
resulting value type
Product: LibreOffice
Version: Inherited From OOo
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: medium
Component: BASIC
Assignee: [email protected]
Reporter: [email protected]
Consider this code:
> sub typesnames
> ' Integer % - doesn't work, Long &
> ' This should print Integer Long, but prints Integer Integer
> MsgBox TypeName(&hff) & " " & TypeName(&hff&)
> end sub
As mentioned in comment, is should output "Integer Long", but gives "Integer
Integer" instead. The trailing data type characters # and & at the literals
should explicitly define the type of the literal, instead of using the default
handling depending on the value of the number.
The code works in Excel as expected, taking value type characters into account.
The impact of the problem is that it's impossible to explicitly define the size
of the value, e.g. when using bitwise operations. Consider the following code:
> Sub ApplyMask
> a = &h0F0F0F0F&
> b = &h0000FF00&
> MsgBox "&h" & Hex(a And b)
> End Sub
The code applies the mask b to number a, and is expected to output "&hF00", but
actually outputs "&hF0F0F00", because b is handled as Integer, which is
negative, which then gets converted into corresponding negative Long when used
in bitwise "And", with all higher bits set, which distorts the mask into
&hFFFFFF00&.
Tested with Version: 6.4.0.3 (x64)
Build ID: b0a288ab3d2d4774cb44b62f04d5d28733ac6df8
CPU threads: 12; OS: Windows 10.0 Build 18363; UI render: GL; VCL: win;
Locale: ru-RU (ru_RU); UI-Language: en-US
Calc: CL
and with OpenOffice.org 3.2.0
OOO320m12 (Build:9483)
--
You are receiving this mail because:
You are the assignee for the bug._______________________________________________
Libreoffice-bugs mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs