From 9cf97d536b8016121d1afb59749d95dc1a9801bc Mon Sep 17 00:00:00 2001 From: Geoff McLane Date: Mon, 15 Feb 2016 12:57:22 +0100 Subject: [PATCH] Issue #373 - Avoid a null added to output. This bug was first openned in 2009 by Christophe Chenon, as bug sf905 but the patch provided then never made it into the source. Now appears fixed, 7 years later! --- src/entities.c | 21 ++++++++++++++++----- version.txt | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/entities.c b/src/entities.c index 935b567..7dd55eb 100644 --- a/src/entities.c +++ b/src/entities.c @@ -352,6 +352,7 @@ uint EntityCode( ctmbstr name, uint versions ) Bool TY_(EntityInfo)( ctmbstr name, Bool isXml, uint* code, uint* versions ) { const entity* np; + int res; assert( name && name[0] == '&' ); assert( code != NULL ); assert( versions != NULL ); @@ -363,13 +364,23 @@ Bool TY_(EntityInfo)( ctmbstr name, Bool isXml, uint* code, uint* versions ) /* 'x' prefix denotes hexadecimal number format */ if ( name[2] == 'x' || (!isXml && name[2] == 'X') ) - sscanf( name+3, "%x", &c ); + res = sscanf( name+3, "%x", &c ); else - sscanf( name+2, "%u", &c ); + res = sscanf( name+2, "%u", &c ); - *code = c; - *versions = VERS_ALL; - return yes; + /* Issue #373 - Null Char in XML result doc - sf905 2009 */ + if ( res == 1 ) + { + *code = c; + *versions = VERS_ALL; + return yes; + } + else + { + *code = 0; + *versions = ( isXml ? VERS_XML : VERS_PROPRIETARY ); + return no; + } } /* Named entity: name ="&" followed by a name */ diff --git a/version.txt b/version.txt index 915d3ff..839d5d0 100644 --- a/version.txt +++ b/version.txt @@ -1,2 +1,2 @@ -5.1.36 -2016.02.01 +5.1.36issue-373 +2016.02.15