Allow compilation with gcc -pedantic-errors -ansi
-------------------------------------------------
Key: XERCESC-1619
URL: http://issues.apache.org/jira/browse/XERCESC-1619
Project: Xerces-C++
Issue Type: Improvement
Components: Build
Affects Versions: Nightly build (please specify the date)
Environment: Linux (SVN revision 422672)
Reporter: Daniel Burr
Priority: Minor
First problem is a couple of stray semi-colons:
--- src/xercesc/dom/impl/DOMLSSerializerImpl.hpp (revision 422672)
+++ src/xercesc/dom/impl/DOMLSSerializerImpl.hpp (working copy)
@@ -214,12 +214,12 @@
, bool val)
{
(val)? fFeatures |= (1<<featureId) : fFeatures &= ~(1<<featureId);
-};
+}
inline bool DOMLSSerializerImpl::getFeature(const int featureId) const
{
return ((fFeatures & ( 1<<featureId )) != 0) ? true : false;
-};
+}
inline void DOMLSSerializerImpl::setURCharRef()
{
gcc complains about a missing return value here:
--- src/xercesc/util/XMLNumber.cpp (revision 422672)
+++ src/xercesc/util/XMLNumber.cpp (working copy)
@@ -88,7 +88,7 @@
return 0;
break;
}
-
+ return NULL;
}
Sometimes TOP_LEVEL_SCOPE is passed as argument 3 of
RefHash3KeysIdPool::getByKey() which is signed, causing gcc to complain that
there is an implicit conversion from unsigned to signed. Fix:
--- src/xercesc/validators/common/Grammar.hpp (revision 422672)
+++ src/xercesc/validators/common/Grammar.hpp (working copy)
@@ -67,7 +67,7 @@
// These are well-known values that must simply be larger
// than any reasonable scope
UNKNOWN_SCOPE = UINT_MAX - 0
- , TOP_LEVEL_SCOPE = UINT_MAX - 1
+ , TOP_LEVEL_SCOPE = INT_MAX - 1
};
// -----------------------------------------------------------------------
Lastly, C99 can not have variable sized arrays allocated on the stack:
--- src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
(revision 422672)
+++ src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
(working copy)
@@ -239,7 +239,9 @@
if (ch <= 0x7F)
return toupper(ch);
- char wcbuf[fUChSize * 2];
+ char* wcbuf = new char[fUChSize << 1];
+ if(!wcbuf) return 0;
+
xmlChToMbc (ch, wcbuf);
char tmpArr[4];
@@ -250,8 +252,11 @@
ICONV_LOCK;
if (::iconv (fCDTo, &ptr, &len,
- &pTmpArr, &bLen) == (size_t) -1)
- return 0;
+ &pTmpArr, &bLen) == (size_t) -1) {
+ delete[] wcbuf;
+ return 0;
+ }
+
tmpArr[1] = toupper (*((unsigned char *)tmpArr));
*tmpArr = tmpArr[1];
len = 1;
@@ -259,9 +264,12 @@
bLen = fUChSize;
ptr = tmpArr;
if (::iconv (fCDFrom, &ptr, &len,
- &pTmpArr, &bLen) == (size_t) -1)
- return 0;
+ &pTmpArr, &bLen) == (size_t) -1) {
+ delete[] wcbuf;
+ return 0;
+ }
mbcToXMLCh (wcbuf, (XMLCh*) &ch);
+ delete[] wcbuf;
return ch;
}
@@ -271,7 +279,9 @@
if (ch <= 0x7F)
return tolower(ch);
- char wcbuf[fUChSize * 2];
+ char* wcbuf = new char[fUChSize << 1];
+ if(!wcbuf) return 0;
+
xmlChToMbc (ch, wcbuf);
char tmpArr[4];
@@ -282,8 +292,10 @@
ICONV_LOCK;
if (::iconv (fCDTo, &ptr, &len,
- &pTmpArr, &bLen) == (size_t) -1)
- return 0;
+ &pTmpArr, &bLen) == (size_t) -1) {
+ delete[] wcbuf;
+ return 0;
+ }
tmpArr[1] = tolower (*((unsigned char*)tmpArr));
*tmpArr = tmpArr[1];
len = 1;
@@ -291,9 +303,12 @@
bLen = fUChSize;
ptr = tmpArr;
if (::iconv (fCDFrom, &ptr, &len,
- &pTmpArr, &bLen) == (size_t) -1)
- return 0;
+ &pTmpArr, &bLen) == (size_t) -1) {
+ delete[] wcbuf;
+ return 0;
+ }
mbcToXMLCh (wcbuf, (XMLCh*) &ch);
+ delete[] wcbuf;
return ch;
}
@@ -303,8 +318,9 @@
if (toCheck <= 0x7F)
return isspace(toCheck);
- char wcbuf[fUChSize * 2];
char tmpArr[4];
+ char* wcbuf = new char[fUChSize << 1];
+ if(!wcbuf) return 0;
xmlChToMbc (toCheck, wcbuf);
char* ptr = wcbuf;
@@ -315,9 +331,12 @@
{
ICONV_LOCK;
if (::iconv (fCDTo, &ptr, &len,
- &pTmpArr, &bLen) == (size_t) -1)
+ &pTmpArr, &bLen) == (size_t) -1) {
+ delete[] wcbuf;
return 0;
+ }
}
+ delete[] wcbuf;
return isspace(*tmpArr);
}
@@ -1153,7 +1172,9 @@
// If the passed value is really a surrogate embedded together, then
// we need to break it out into its two chars. Else just one.
//
- char srcBuf[2 * uChSize()];
+ char* srcBuf = new char[uChSize() << 1];
+ if(!srcBuf) return 0;
+
unsigned int srcCount = 1;
if (toCheck & 0xFFFF0000) {
XMLCh ch1 = (toCheck >> 10) + 0xD800;
@@ -1168,6 +1189,7 @@
char* pTmpBuf = tmpBuf;
size_t rc = iconvTo( srcBuf, &len, &pTmpBuf, 64);
+ delete[] srcBuf;
return (rc != (size_t)-1) && (len == 0);
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]