[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: