[xml/sgml-pkgs] Bug#245368: marked as done (libxerces23-dev: Compilation errors with g++-3.4)

Debian Bug Tracking System owner@bugs.debian.org
Thu, 17 Jun 2004 04:03:12 -0700


Your message dated Thu, 17 Jun 2004 06:47:23 -0400
with message-id <E1BauQV-00057s-00@newraff.debian.org>
and subject line Bug#245368: fixed in xerces23 2.3.0-3
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 22 Apr 2004 19:19:43 +0000
>From speedblue@debian.org Thu Apr 22 12:19:43 2004
Return-path: <speedblue@debian.org>
Received: from happycoders.org (smtp.happycoders.org) [213.161.203.28] 
	by spohr.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1BGjjb-00019X-00; Thu, 22 Apr 2004 12:19:43 -0700
Received: from localhost ([127.0.0.1] helo=[10.3.3.2])
	by smtp.happycoders.org with asmtp (Exim 3.36 #1 (Debian))
	id 1BGjjZ-0006k2-00
	for <submit@bugs.debian.org>; Thu, 22 Apr 2004 21:19:42 +0200
From: Julien Lemoine <speedblue@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: libxerces23-dev: Compilation errors with g++-3.4
Date: Thu, 22 Apr 2004 21:19:37 +0200
User-Agent: KMail/1.6.2
MIME-Version: 1.0
Content-Disposition: inline
Organization: Debian
Content-Type: Multipart/Mixed;
  boundary="Boundary-00=_JrBiAUS4QeIcZJ4"
Message-Id: <200404222119.37626.speedblue@debian.org>
Delivered-To: submit@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Status: No, hits=-7.0 required=4.0 tests=BAYES_00,HAS_PACKAGE 
	autolearn=no version=2.60-bugs.debian.org_2004_03_25
X-Spam-Level: 
X-CrossAssassin-Score: 1


--Boundary-00=_JrBiAUS4QeIcZJ4
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Package: libxerces23-dev
Version: 2.3.0-1.1
Severity: important
Tags: patch
Justification: fails to build from source

There is a error when compiling c++ software that use xerces 2.3 with 
g++-3.4 (error in header file) :

$ cd /usr/share/doc/libxerces23-dev/examples/samples/DOMCount && g++-3.4 
DOMCount.cpp -lxerces-c -o /tmp/DOMCount
In file included from /usr/include/xercesc/util/RefVectorOf.hpp:138,
                 from /usr/include/xercesc/framework/XMLDocumentHandler.hpp:110,
                 from /usr/include/xercesc/parsers/AbstractDOMParser.hpp:65,
                 from DOMCount.cpp:65:
/usr/include/xercesc/util/RefVectorOf.c: In destructor `xercesc_2_3::RefVectorOf<TElem>::~RefVectorOf()':
/usr/include/xercesc/util/RefVectorOf.c:139: error: `fMemoryManager' undeclared (first use this function)
/usr/include/xercesc/util/RefVectorOf.c:139: error: (Each undeclared identifier is reported only once for each function it appears in.)
In file included from /usr/include/c++/3.4/backward/iostream.h:31,
                 from DOMCount.hpp:98,
                 from DOMCount.cpp:77:
/usr/include/c++/3.4/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated 
header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> 
header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use 
-Wno-deprecated.
$

A simple patch is needed to compile this file :
--- /usr/include/xercesc/util/RefVectorOf.c.orig     2004-04-22 20:34:17.000000000 +0200
+++ /usr/include/xercesc/util/RefVectorOf.c  2004-04-22 20:34:27.000000000 +0200
@@ -136,7 +136,7 @@
        for (unsigned int index = 0; index < this->fCurCount; index++)
         delete this->fElemList[index];
     }
-    fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList;
+    BaseRefVectorOf<TElem>::fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList;
 }

There is other compilation problems when compiling xerces 2.3 with g++-3.4, A complet patch to allow
recompilation of xerces 2.3 with g++ 3.4 (patch for upstream source) is attached with this mail.

Best Regards.
-- 
Julien Lemoine / SpeedBlue
"Savoir que les choses sont sans espoir et cependant 
tout faire pour les changer", Francis Scott Fitzgerald


--Boundary-00=_JrBiAUS4QeIcZJ4
Content-Type: text/x-diff;
  charset="us-ascii";
  name="xerces.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="xerces.patch"

diff -bBdNrw -U5 xerces-c-src_2_3_0/src/xercesc/util/RefArrayOf.c xerces-c-src_2_3_0-modif/src/xercesc/util/RefArrayOf.c
--- xerces-c-src_2_3_0/src/xercesc/util/RefArrayOf.c	2003-05-27 17:04:55.000000000 +0200
+++ xerces-c-src_2_3_0-modif/src/xercesc/util/RefArrayOf.c	2004-04-22 21:07:41.000000000 +0200
@@ -101,13 +101,13 @@
 RefArrayOf<TElem>::RefArrayOf(const unsigned int size,
                               MemoryManager* const manager) :
 
     fSize(size)
     , fArray(0)
-    , fMemoryManager(manager)
+    , _fMemoryManager(manager)
 {
-    fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
+    fArray = (TElem**) _fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
     for (unsigned int index = 0; index < fSize; index++)
         fArray[index] = 0;
 }
 
 template <class TElem>
@@ -115,32 +115,32 @@
                               const unsigned int size,
                               MemoryManager* const manager) :
 
     fSize(size)
     , fArray(0)
-    , fMemoryManager(manager)
+    , _fMemoryManager(manager)
 {
-    fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
+    fArray = (TElem**) _fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
     for (unsigned int index = 0; index < fSize; index++)
         fArray[index] = values[index];
 }
 
 template <class TElem> RefArrayOf<TElem>::
 RefArrayOf(const RefArrayOf<TElem>& source) :
 
     fSize(source.fSize)
     , fArray(0)
-    , fMemoryManager(source.fMemoryManager)
+    , _fMemoryManager(source._fMemoryManager)
 {
-    fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
+    fArray = (TElem**) _fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
     for (unsigned int index = 0; index < fSize; index++)
         fArray[index] = source.fArray[index];
 }
 
 template <class TElem> RefArrayOf<TElem>::~RefArrayOf()
 {
-    fMemoryManager->deallocate(fArray);//delete [] fArray;
+    _fMemoryManager->deallocate(fArray);//delete [] fArray;
 }
 
 
 // ---------------------------------------------------------------------------
 //  RefArrayOf: Public operators
@@ -168,13 +168,13 @@
         return *this;
 
     // Reallocate if not the same size
     if (toAssign.fSize != fSize)
     {
-        fMemoryManager->deallocate(fArray);//delete [] fArray;
+        _fMemoryManager->deallocate(fArray);//delete [] fArray;
         fSize = toAssign.fSize;
-        fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
+        fArray = (TElem**) _fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize];
     }
 
     // Copy over the source elements
     for (unsigned int index = 0; index < fSize; index++)
         fArray[index] = toAssign.fArray[index];
@@ -268,11 +268,11 @@
 
     if (newSize < fSize)
         ThrowXML(IllegalArgumentException, XMLExcepts::Array_BadNewSize);
 
     // Allocate the new array
-    TElem** newArray = (TElem**) fMemoryManager->allocate
+    TElem** newArray = (TElem**) _fMemoryManager->allocate
     (
         newSize * sizeof(TElem*)
     );//new TElem*[newSize];
 
     // Copy the existing values
@@ -282,11 +282,11 @@
 
     for (; index < newSize; index++)
         newArray[index] = 0;
 
     // Delete the old array and udpate our members
-    fMemoryManager->deallocate(fArray);//delete [] fArray;
+    _fMemoryManager->deallocate(fArray);//delete [] fArray;
     fArray = newArray;
     fSize = newSize;
 }
 
 
diff -bBdNrw -U5 xerces-c-src_2_3_0/src/xercesc/util/RefArrayOf.hpp xerces-c-src_2_3_0-modif/src/xercesc/util/RefArrayOf.hpp
--- xerces-c-src_2_3_0/src/xercesc/util/RefArrayOf.hpp	2003-05-27 17:04:55.000000000 +0200
+++ xerces-c-src_2_3_0-modif/src/xercesc/util/RefArrayOf.hpp	2004-04-22 21:07:28.000000000 +0200
@@ -96,11 +96,11 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/ArrayIndexOutOfBoundsException.hpp>
 #include <xercesc/util/IllegalArgumentException.hpp>
 #include <xercesc/util/XMLEnumerator.hpp>
-
+#include <xercesc/framework/MemoryManager.hpp>
 XERCES_CPP_NAMESPACE_BEGIN
 
 template <class TElem> class RefArrayOf : public XMemory
 {
 public :
@@ -155,11 +155,11 @@
     // -----------------------------------------------------------------------
     //  Data members
     // -----------------------------------------------------------------------
 	unsigned int    fSize;
 	TElem**         fArray;
-    MemoryManager*  fMemoryManager;
+  MemoryManager*  _fMemoryManager;
 };
 
 
 //
 //  An enumerator for a reference array. It derives from the basic enumerator
diff -bBdNrw -U5 xerces-c-src_2_3_0/src/xercesc/util/RefArrayVectorOf.c xerces-c-src_2_3_0-modif/src/xercesc/util/RefArrayVectorOf.c
--- xerces-c-src_2_3_0/src/xercesc/util/RefArrayVectorOf.c	2003-05-27 17:04:55.000000000 +0200
+++ xerces-c-src_2_3_0-modif/src/xercesc/util/RefArrayVectorOf.c	2004-04-22 21:05:51.000000000 +0200
@@ -20,15 +20,18 @@
 }
 
 
 template <class TElem> RefArrayVectorOf<TElem>::~RefArrayVectorOf()
 {
-    if (fAdoptedElems)
+    if (BaseRefVectorOf<TElem>::fAdoptedElems)
     {
-      for (unsigned int index = 0; index < fCurCount; index++)
-        fMemoryManager->deallocate(fElemList[index]);//delete[] fElemList[index];
+      for (unsigned int index = 0; 
+	   index < BaseRefVectorOf<TElem>::fCurCount; index++)
+        BaseRefVectorOf<TElem>::fMemoryManager->deallocate(BaseRefVectorOf<TElem>::fElemList[index]);
+      //delete[] fElemList[index];
     }
-    fMemoryManager->deallocate(fElemList);//delete [] fElemList;
+    BaseRefVectorOf<TElem>::fMemoryManager->deallocate(BaseRefVectorOf<TElem>::fElemList);
+    //delete [] fElemList;
 }
 
 
 XERCES_CPP_NAMESPACE_END
diff -bBdNrw -U5 xerces-c-src_2_3_0/src/xercesc/util/RefVectorOf.c xerces-c-src_2_3_0-modif/src/xercesc/util/RefVectorOf.c
--- xerces-c-src_2_3_0/src/xercesc/util/RefVectorOf.c	2003-05-27 17:04:55.000000000 +0200
+++ xerces-c-src_2_3_0-modif/src/xercesc/util/RefVectorOf.c	2004-04-22 21:04:53.000000000 +0200
@@ -134,10 +134,10 @@
     if (this->fAdoptedElems)
     {
        for (unsigned int index = 0; index < this->fCurCount; index++)
         delete this->fElemList[index];
     }
-    fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList;
+    BaseRefVectorOf<TElem>::fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList;
 }
 
 
 XERCES_CPP_NAMESPACE_END

--Boundary-00=_JrBiAUS4QeIcZJ4--

---------------------------------------
Received: (at 245368-close) by bugs.debian.org; 17 Jun 2004 10:53:17 +0000
>From katie@ftp-master.debian.org Thu Jun 17 03:53:17 2004
Return-path: <katie@ftp-master.debian.org>
Received: from newraff.debian.org [208.185.25.31] (mail)
	by spohr.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1BauWD-0004uv-00; Thu, 17 Jun 2004 03:53:17 -0700
Received: from katie by newraff.debian.org with local (Exim 3.35 1 (Debian))
	id 1BauQV-00057s-00; Thu, 17 Jun 2004 06:47:23 -0400
From: Jay Berkenbilt <ejb@ql.org>
To: 245368-close@bugs.debian.org
X-Katie: $Revision: 1.49 $
Subject: Bug#245368: fixed in xerces23 2.3.0-3
Message-Id: <E1BauQV-00057s-00@newraff.debian.org>
Sender: Archive Administrator <katie@ftp-master.debian.org>
Date: Thu, 17 Jun 2004 06:47:23 -0400
Delivered-To: 245368-close@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Status: No, hits=-5.0 required=4.0 tests=BAYES_00,DATING,
	HAS_BUG_NUMBER autolearn=no version=2.60-bugs.debian.org_2004_03_25
X-Spam-Level: 
X-CrossAssassin-Score: 4

Source: xerces23
Source-Version: 2.3.0-3

We believe that the bug you reported is fixed in the latest version of
xerces23, which is due to be installed in the Debian FTP archive:

libxerces23-dev_2.3.0-3_i386.deb
  to pool/main/x/xerces23/libxerces23-dev_2.3.0-3_i386.deb
libxerces23-doc_2.3.0-3_all.deb
  to pool/main/x/xerces23/libxerces23-doc_2.3.0-3_all.deb
libxerces23_2.3.0-3_i386.deb
  to pool/main/x/xerces23/libxerces23_2.3.0-3_i386.deb
libxercesicu23_2.3.0-3_i386.deb
  to pool/main/x/xerces23/libxercesicu23_2.3.0-3_i386.deb
xerces23_2.3.0-3.diff.gz
  to pool/main/x/xerces23/xerces23_2.3.0-3.diff.gz
xerces23_2.3.0-3.dsc
  to pool/main/x/xerces23/xerces23_2.3.0-3.dsc



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 245368@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Jay Berkenbilt <ejb@ql.org> (supplier of updated xerces23 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Sat, 12 Jun 2004 11:59:23 -0400
Source: xerces23
Binary: libxerces23-doc libxercesicu23 libxerces23-dev libxerces23
Architecture: source i386 all
Version: 2.3.0-3
Distribution: unstable
Urgency: low
Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
Changed-By: Jay Berkenbilt <ejb@ql.org>
Description: 
 libxerces23 - Validating XML parser library for C++
 libxerces23-dev - Validating XML parser library for C++ (development files)
 libxerces23-doc - Validating XML parser library for C++ (documentation)
 libxercesicu23 - Validating XML parser library for C++
Closes: 211514 211515 229646 245368 246442
Changes: 
 xerces23 (2.3.0-3) unstable; urgency=low
 .
   * Switch from libicu21 to libicu28
   * Switch from GNU transcoder to native transcoder (Closes: #246442,
     #229646)
   * Fix compilation errors with g++ 3.4 (Closes: #245368)
   * Explain in README.Debian for the doc package where the top-level
     index.html is for the local package. (Closes: #211514)
   * Register with doc-base (Closes: #211515)
Files: 
 c7cf203805cb6595ed7dccd48aaae759 762 libs extra xerces23_2.3.0-3.dsc
 3be994cb4ded1c4969df90029ccc2f70 7752 libs extra xerces23_2.3.0-3.diff.gz
 b720f6f4a4b785a9a081de9e496f614f 3258676 doc extra libxerces23-doc_2.3.0-3_all.deb
 75b947be0cc488a557cc0d76af69eb70 712572 libdevel extra libxerces23-dev_2.3.0-3_i386.deb
 2e4a89af5a3dfb51b298a4df1d2adc51 859312 libs extra libxerces23_2.3.0-3_i386.deb
 9076e17235f9f2b6ec0699faa229b0e0 859996 libs extra libxercesicu23_2.3.0-3_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFA0CjTF/2r6GCc0sARApsRAJ9LNBuJ9cR/3bOWqZ8bxaFPEzlblgCfbJvv
Ye6DOJBkrEwEl9XZJ3aWSa0=
=bEPX
-----END PGP SIGNATURE-----