diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-03-27 09:57:25 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-03-28 10:27:45 +0200 |
commit | b4f5c3fea2428fff9f470b6cde86b867787128d8 (patch) | |
tree | 02501c7acef1226c24c8e44f5030eb67c12b5a7f | |
parent | 2fc2a3542988e0dbf71163b40d5fe495a6789d40 (diff) |
n#751117 writerfilter: include all oox tokens in gperffasttoken.hxx
Without that, the following happens:
1) ShapeTypeContext::onCreateContext() in oox calls rAttribs.getToken()
2) FastAttributeList::getOptionalValueToken() in sax calls mxTokenHandler->getTokenFromUTF8()
3) OOXMLFastTokenHandler::getTokenFromUTF8() won't find the oox token and return OOXML_FAST_TOKENS_END
I verified that the new gperf input just adds tokens to the hash,
doesn't remove any.
-rw-r--r-- | writerfilter/source/Makefile | 4 | ||||
-rw-r--r-- | writerfilter/source/ooxml/gperffasttokenhandler.xsl | 13 |
2 files changed, 8 insertions, 9 deletions
diff --git a/writerfilter/source/Makefile b/writerfilter/source/Makefile index 240893c5aeb4..2b10ae972629 100644 --- a/writerfilter/source/Makefile +++ b/writerfilter/source/Makefile @@ -140,9 +140,9 @@ $(wf_GEN_ooxml_NamespaceIds_hxx) : $(wf_SRC_ooxml_NamespaceIds_xsl) $(wf_GEN_oox $(call gb_Output_announce,$@,build,XSL,1) $(call gb_Helper_abbreviate_dirs_native, $(gb_XSLTPROC) $(wf_SRC_ooxml_NamespaceIds_xsl) $(wf_GEN_ooxml_Model_processed)) > $@ -$(wf_GEN_ooxml_GperfFastToken_hxx) : $(wf_SRC_ooxml_GperfFastTokenHandler_xsl) $(wf_GEN_ooxml_Model_processed) +$(wf_GEN_ooxml_GperfFastToken_hxx) : $(wf_SRC_ooxml_GperfFastTokenHandler_xsl) $(wf_GEN_ooxml_token_xml) $(call gb_Output_announce,$@,build,GPF,1) - $(call gb_Helper_abbreviate_dirs_native, $(gb_XSLTPROC) $(wf_SRC_ooxml_GperfFastTokenHandler_xsl) $(wf_GEN_ooxml_Model_processed)) \ + $(call gb_Helper_abbreviate_dirs_native, $(gb_XSLTPROC) $(wf_SRC_ooxml_GperfFastTokenHandler_xsl) $(wf_GEN_ooxml_token_xml)) \ | tr -d '\r' | $(GPERF) -I -t -E -S1 -c -G -LC++ > $@ $(wf_GEN_ooxml_Model_analyzed): $(wf_SRC_ooxml_Analyze_model_xsl) $(wf_SRC_ooxml_Model) diff --git a/writerfilter/source/ooxml/gperffasttokenhandler.xsl b/writerfilter/source/ooxml/gperffasttokenhandler.xsl index d14db0486b5d..648342d57a33 100644 --- a/writerfilter/source/ooxml/gperffasttokenhandler.xsl +++ b/writerfilter/source/ooxml/gperffasttokenhandler.xsl @@ -77,15 +77,14 @@ namespace writerfilter { namespace ooxml { namespace tokenmap { %} struct token { const char * name; Token_t nToken; }; %%</xsl:text> - <xsl:for-each select=".//rng:element|.//rng:attribute"> - <xsl:if test="generate-id(.) = generate-id(key('same-token-name', @localname)[1])"> - <xsl:text>
</xsl:text> - <xsl:value-of select="@localname"/> - <xsl:text>, </xsl:text> - <xsl:call-template name="fastlocalname"/> - </xsl:if> + <xsl:for-each select="/model/fasttoken"> + <xsl:text>
</xsl:text> + <xsl:value-of select="translate(., '-', '_')"/> + <xsl:text>, OOXML_</xsl:text> + <xsl:value-of select="translate(., '-', '_')"/> </xsl:for-each> <xsl:text> +FAST_TOKENS_END, OOXML_FAST_TOKENS_END %%
</xsl:text> }}}
</xsl:template> |