Bug 143182 - Format Basic function converts string to number irrespective of format string
Summary: Format Basic function converts string to number irrespective of format string
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: BASIC (show other bugs)
Version:
(earliest affected)
unspecified
Hardware: All All
: medium normal
Assignee: Mike Kaganski
URL:
Whiteboard: target:26.2.0 target:25.8.2
Keywords:
Depends on:
Blocks: Macro-StarBasic
  Show dependency treegraph
 
Reported: 2021-07-04 14:19 UTC by Mike Kaganski
Modified: 2025-09-01 08:01 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mike Kaganski 2021-07-04 14:19:10 UTC
In LibreOffice Basic, this call returns "1":

  Format("001", "@")

The format string specifies "put the text as is", but the "001" obviously gets converted to a number before processing.

Note that Format documentation [1] is wrong where it tells "expression: Numeric expression". In fact, this function argument is Variant, and works with input like "Bar" as expected, without converting it to 0. (FTR: the method is specified at [2], implemented in [3], and functionally implemented in [4].)

In VBA, the call above produces the expected "001".

[1] https://help.libreoffice.org/7.2/en-US/text/sbasic/shared/03120301.html?DbPAR=BASIC
[2] https://opengrok.libreoffice.org/xref/core/basic/source/runtime/stdobj.cxx?r=fbaf865f#389
[3] https://opengrok.libreoffice.org/xref/core/basic/source/runtime/methods.cxx?r=4a0b40f1&fi=SbRtl_Format#SbRtl_Format
[4] https://opengrok.libreoffice.org/xref/core/basic/source/sbx/sbxscan.cxx?r=0771ac00&mo=19326&fi=660#660
Comment 1 Andreas Heinisch 2021-07-07 17:56:45 UTC
Confirmed in:

Version: 7.3.0.0.alpha0+ (x64) / LibreOffice Community
Build ID: 0aea0cee58fe77a9058217dfdfc3d6a02b29ee2a
CPU threads: 6; OS: Windows 10.0 Build 19042; UI render: Skia/Raster; VCL: win
Locale: en-US (de_DE); UI: en-US
Calc: CL
Comment 2 QA Administrators 2023-07-08 03:15:36 UTC Comment hidden (obsolete)
Comment 3 Mike Kaganski 2025-08-28 22:51:10 UTC
https://gerrit.libreoffice.org/c/core/+/190348
Comment 4 Commit Notification 2025-08-29 16:34:15 UTC
Mike Kaganski committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/a3597edb52b671e6095f96c8705cd458a50d8799

tdf#143182: fix string handling in SbxValue::Format

It will be available in 26.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 5 Commit Notification 2025-09-01 08:01:06 UTC
Mike Kaganski committed a patch related to this issue.
It has been pushed to "libreoffice-25-8":

https://git.libreoffice.org/core/commit/d16697fbf6a6653dc631ebd887147afe2bfba37d

tdf#143182: fix string handling in SbxValue::Format

It will be available in 25.8.2.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.