summaryrefslogtreecommitdiff
path: root/sax
diff options
context:
space:
mode:
Diffstat (limited to 'sax')
-rw-r--r--sax/source/fastparser/fastparser.cxx11
1 files changed, 8 insertions, 3 deletions
diff --git a/sax/source/fastparser/fastparser.cxx b/sax/source/fastparser/fastparser.cxx
index 9b2d9bd97458..04bf69a1705b 100644
--- a/sax/source/fastparser/fastparser.cxx
+++ b/sax/source/fastparser/fastparser.cxx
@@ -933,6 +933,7 @@ void FastSaxParserImpl::setNamespaceHandler( const Reference< XFastNamespaceHand
maData.mxNamespaceHandler = Handler;
}
+#include <stdio.h>
void FastSaxParserImpl::setCustomEntityNames( const ::css::uno::Sequence< ::rtl::OUString >& names, const ::css::uno::Sequence< ::rtl::OUString >& replacements )
{
mEntityNames = names;
@@ -1368,6 +1369,11 @@ xmlEntityPtr FastSaxParserImpl::callbackGetEntity( const xmlChar *name )
if( !name )
return xmlGetPredefinedEntity(name);
const char* dname = XML_CAST(name);
+ int lname = strlen(dname);
+ if( lname == 0 )
+ return xmlGetPredefinedEntity(name);
+ if( !mEntityNames.hasElements() )
+ return xmlGetPredefinedEntity(name);
for( size_t i = 0; i < mEntityNames.size(); ++i )
{
if( mEntityNames[i].compareToAscii(dname) == 0 )
@@ -1378,12 +1384,11 @@ xmlEntityPtr FastSaxParserImpl::callbackGetEntity( const xmlChar *name )
BAD_CAST(OUStringToOString(mEntityReplacements[i],RTL_TEXTENCODING_UTF8).getStr()));
}
}
+ if( lname < 2 )
+ return xmlGetPredefinedEntity(name);
if ( dname[0] == '#' )
{
sal_uInt32 cval = 0;
- int_fast16_t lname = strlen(dname);
- if( lname < 2 )
- return xmlGetPredefinedEntity(name);
if( dname[1] == 'x' || dname[1] == 'X' )
{
if( lname < 3 )