forked from amazingfate/loongoffice
BSTR is documented [1] to be prefixed by a 32-bit integer specifying its length *in bytes* (not characters), so passing wchar_t* as BSTR is wrong, and the length member of rtl_uString can't substitute the proper BSTR length, since rtl_uString::length specifies length in characters. Any code taking BSTR and using SysStringLen to get its length would only get half of the passed OUString data. In dbaccess/source/ui/dlg/adodatalinks.cxx, the abovementioned error was implemented. OTOH, OLEVariant::getByteSequence() in connectivity/source/drivers/ado/Aolevariant.cxx passed BSTR from tagVARIANT to ctor of OLEString, which resulted in the BSTR being freed in both dtors of OLEString and OLEVariant (the latter calls VariantClear, which itself clears string when vtfield is VT_BSTR). [1] https://docs.microsoft.com/en-us/previous-versions/windows/desktop/automat/bstr Change-Id: Iedbd62b20133644258af3660616add7b63cac258 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131950 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Description.
The StarOffice ActiveX control shows an example of access to UNO through COM technology.
It requires a properly installed StarOffice version 6.0/6.1 or OpenOffice 1.0.
This is a Lite ActiveX control so it can be used only in containers that
allows to use such controls.
Pressing to any link to staroffice document should activate the control.
So the document will be opened in ReadOnly mode.
Also it can be activated with an <OBJECT> tag from a html-page.
Without any parameters for an object tag a new writer document will be
opened for editing. Possible parameters are
src - full URL to the file that should be edited/viewed;
it can contain "private:factory/..." URLs to open new documents
for edit, for example "private:factory/swriter"
readonly - the default value is "true", in case it is set to any other
value the document is opened for editing
As any ActiveX control this one should be registered.
To let MSIE register it itself the "CODEBASE" parameter
for the "OBJECT" tag should be specified
with a URL to the library "so_activex.dll".
The example of registration with "OBJECT" tag is in example.html.
Also it can be done using regsvr32 application.
To do it please write
<Path to Windows installation>\System32\regsvr32 so_activex.dll
To unregister the control please use /u option:
<Path to Windows installation>\system32\regsvr32 so_activex.dll /u