Re: Minor improvement possible

Daniel Veillard <[email protected]>
Newsgroups gmane.comp.gnome.lib.xml.general
Message-ID <[email protected]>
  Hi Bruce,

 indeed a minor improvement, but that sounds absolutely right, those
data tables are never updated,

  Applied and pushed:

https://git.gnome.org/browse/libxml2/commit/?id=8f57103793e1e1b1be478f1feb607d19d725d048

  thanks a lot,

Daniel


On Thu, Jan 05, 2017 at 03:00:20PM -0800, Bruce Dawson via xml wrote:
> The constant array xmlUnicodeBlocks is not marked as 'const' so it ends up
> in the read/write data segment instead of the read-only data segment, which
> can lead to it becoming per-process private data instead of image-backed
> shared data.
> 
> A patch file (made in the context of Chrome, but it should be applicable to
> libxml2) is attached.
> 
> -- 
> Bruce Dawson

> commit eafa8bbee03e8ebba366be1fb8d5b1596a989a0a
> Author: Bruce Dawson <[email protected]>
> Date:   Thu Jan 5 11:25:58 2017 -0800
> 
>     Add const in five places to move 1 KiB to .rdata
>     
>     xmlUnicodeBlocks is logically const but was not marked as such. This
>     fixes that, thus moving it to the read-only data segment.
>     
>     BUG=677351
> 
> diff --git a/third_party/libxml/src/genUnicode.py b/third_party/libxml/src/genUnicode.py
> index 56e4e9b..4487eeb 100755
> --- a/third_party/libxml/src/genUnicode.py
> +++ b/third_party/libxml/src/genUnicode.py
> @@ -267,14 +267,14 @@ typedef struct {
>  } xmlUnicodeRange;
>  
>  typedef struct {
> -    xmlUnicodeRange *table;
> +    const xmlUnicodeRange *table;
>      int		    numentries;
>  } xmlUnicodeNameTable;
>  
>  
>  static xmlIntFunc *xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname);
>  
> -static xmlUnicodeRange xmlUnicodeBlocks[] = {
> +static const xmlUnicodeRange xmlUnicodeBlocks[] = {
>  """ % (webpage, date, sources));
>  
>  flag = 0
> diff --git a/third_party/libxml/src/xmlunicode.c b/third_party/libxml/src/xmlunicode.c
> index ce6e9a4..6d0a96a 100644
> --- a/third_party/libxml/src/xmlunicode.c
> +++ b/third_party/libxml/src/xmlunicode.c
> @@ -29,14 +29,14 @@ typedef struct {
>  } xmlUnicodeRange;
>  
>  typedef struct {
> -    xmlUnicodeRange *table;
> +    const xmlUnicodeRange *table;
>      int		    numentries;
>  } xmlUnicodeNameTable;
>  
>  
>  static xmlIntFunc *xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname);
>  
> -static xmlUnicodeRange xmlUnicodeBlocks[] = {
> +static const xmlUnicodeRange xmlUnicodeBlocks[] = {
>    {"AegeanNumbers", xmlUCSIsAegeanNumbers},
>    {"AlphabeticPresentationForms", xmlUCSIsAlphabeticPresentationForms},
>    {"Arabic", xmlUCSIsArabic},
> @@ -945,7 +945,7 @@ static xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, 36};
>  static xmlIntFunc
>  *xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname) {
>      int low, high, mid, cmp;
> -    xmlUnicodeRange *sptr;
> +    const xmlUnicodeRange *sptr;
>  
>      if ((tptr == NULL) || (tname == NULL)) return(NULL);
>  

> _______________________________________________
> xml mailing list, project page  http://xmlsoft.org/
> [email protected]
> https://mail.gnome.org/mailman/listinfo/xml


-- 
Daniel Veillard      | Red Hat Developers Tools http://developer.redhat.com/
[email protected]  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.