Bug#357449: openoffice.org-dev: IDLC concatenation string bug when calling IDLCPP
Package: openoffice.org-dev
Version: 1.1.3-9
Severity: important
Tags: patch
strace shows that when IDLC (idlc.bin) calls idlcpp (the preprocessor), it actually
calls a nonexistent file "idlcidlcpp".
A simple workaround is creating a simbolic link idlcidlcpp->idlcpp.
The problem seems to be in the file idlcompile.cxx. It looks as the
copy method of cpp would not be able to delete characters on its own
string. A suggested patch (not tried actually) is attached in which I
create a temporary second variable.
I don't know if the problem persists in the OpenOffice SDK of 2.0
version.
-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.6.8-2-386
Locale: LANG=spanish, LC_CTYPE=spanish (charmap=ISO-8859-1) (ignored: LC_ALL set to es_ES)
Versions of packages openoffice.org-dev depends on:
ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an
ii libgcc1 1:3.4.3-13 GCC support library
ii libstdc++5 1:3.3.5-13 The GNU Standard C++ Library v3
ii libstlport4.6 4.6.2-2 STLport C++ class library
ii libstlport4.6-dev 4.6.2-2 STLport C++ class library
ii openoffice.org-bin 1.1.3-9 OpenOffice.org office suite binary
ii openoffice.org-debian-files 1.1.3-8+1 Debian specific parts of OpenOffic
-- no debconf information
--- orig_idlccompile.cxx 2003-03-26 13:11:08.000000000 +0100
+++ idlccompile.cxx 2006-03-17 13:52:21.000000000 +0100
@@ -322,15 +322,17 @@
OUString cmdArg(RTL_CONSTASCII_USTRINGPARAM("@"));
cmdArg += OStringToOUString(cmdFileName, RTL_TEXTENCODING_UTF8);
- OUString cpp;
+ OUString execfile;
OUString startDir;
- OSL_VERIFY(osl_getExecutableFile(&cpp.pData) == osl_Process_E_None);
+ OSL_VERIFY(osl_getExecutableFile(&execfile.pData) == osl_Process_E_None);
+
+ OUString cpp;
#if defined(SAL_W32) || defined(SAL_OS2)
- cpp = cpp.copy(0, cpp.getLength() - 8);
+ cpp = execfile.copy(0, execfile.getLength() - 8);
cpp += OUString( RTL_CONSTASCII_USTRINGPARAM("idlcpp.exe"));
#else
- cpp = cpp.copy(0, cpp.getLength() - 4);
+ cpp = execfile.copy(0, execfile.getLength() - 4);
cpp += OUString( RTL_CONSTASCII_USTRINGPARAM("idlcpp"));
#endif
Reply to: