office-gobmx/basic/source/classes
Mike Kaganski 120daca419 tdf#149447: use proper UNO types for marshalling unsigned Basic types
cppu::UnoType<sal_uInt8> corresponds to UNO boolean, so its use made the
unsigned values be converted to a true/false in Any; and additionally,
using such a boolean Any, even having a 'true' value, as a parameter to
a double argument would make operator >>=(const Any &, double &) return
false, giving the resulting double equal to 0.

The wrong conversion of UShorts and ULongs to cppu::UnoType<sal_uInt8>
(aka TypeClass_BOOLEAN) was introduced in commit
11f9aa4fcb
  Author Andreas Bregas <ab@openoffice.org>
  Date   Thu May 10 14:22:42 2001 +0000
    #79615# sbxToUnoValue(): Choose smallest possible type for numeric values

Treating of unsigned Basic Byte as a signed cppu::UnoType<sal_Int8> (aka
TypeClass_BYTE) was already introduced in
commit c25ec0608a
  Author Jens-Heiner Rechtien <hr@openoffice.org>
  Date   Mon Sep 18 15:18:56 2000 +0000
    initial import

Then, in commit 553cf2a834
  Author Andreas Bregas <ab@openoffice.org>
  Date   Fri Jun 08 14:59:57 2001 +0000
    #87927# Map TypeClass_BYTE to SbxINTEGER instead of SbxBYTE because of signed/unsigned problem

an attempt was made to handle obviously this same problem, changing the
corresponding UNO type to TypeClass_SHORT. But it seems that it created
problems when passing arrays of Byte through UNO to COM, where it needed
to convert to a safearray, so this decision was reverted in commit
dd6ba6b64a
  Author Mikhail Voytenko <mav@openoffice.org>
  Date   Thu Jul 08 21:33:48 2010 +0200
    mib17: #162917# let basic byte use one byte, let olebridge convert sequence to safearray correctly

This change tries to avoid the problem that caused the latter revert,
by only treating Bytes as UNO shorts in getUnoTypeForSbxValue, where
scalar Byte values are considered, keeping old handling for arrays.

Change-Id: I805108743376e2fc27dd21a27c31759b76dc0d09
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136526
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-06-28 15:15:48 +02:00
..
codecompletecache.cxx
errobject.cxx
eventatt.cxx
global.cxx
image.cxx Use more appropriate type for SbiImage::GetString nId param 2022-06-01 21:20:29 +02:00
propacc.cxx
sb.cxx
sbintern.cxx
sbunoobj.cxx tdf#149447: use proper UNO types for marshalling unsigned Basic types 2022-06-28 15:15:48 +02:00
sbxmod.cxx tdf#149622: also clear return value before calling method from SbxObject::Call 2022-06-20 12:46:27 +02:00