This is an automated email from the ASF dual-hosted git repository.

rleigh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/xerces-c.git


The following commit(s) were added to refs/heads/master by this push:
     new 02cec95  DFAContentModel::checkUniqueParticleAttribution (): speed 
enhancement
     new c0b90c2  Merge pull request #37 from 
rouault/faster_checkUniqueParticleAttribution
02cec95 is described below

commit 02cec9524882815db078fa5fb7486762928a4d3d
Author: Even Rouault <even.roua...@spatialys.com>
AuthorDate: Mon Sep 20 11:59:45 2021 +0200

    DFAContentModel::checkUniqueParticleAttribution (): speed enhancement
    
    The complexity of this method is roughly O(n^3). Fuzzers can generate
    schemas with n = several thousands. The test fTransTable[i][j] == 
XMLContentModel::gInvalidTrans
    is independant of the k loop, and can thus being moved at a upper level
    to improve runtime.
---
 src/xercesc/validators/common/DFAContentModel.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/xercesc/validators/common/DFAContentModel.cpp 
b/src/xercesc/validators/common/DFAContentModel.cpp
index 2f590fe..5030565 100644
--- a/src/xercesc/validators/common/DFAContentModel.cpp
+++ b/src/xercesc/validators/common/DFAContentModel.cpp
@@ -1642,9 +1642,10 @@ void DFAContentModel::checkUniqueParticleAttribution 
(SchemaGrammar*    const pG
     // for each state, check whether it has overlap transitions
     for (i = 0; i < fTransTableSize; i++) {
         for (j = 0; j < fElemMapSize; j++) {
+            if (fTransTable[i][j] == XMLContentModel::gInvalidTrans)
+                continue;
             for (k = j+1; k < fElemMapSize; k++) {
-                if (fTransTable[i][j] != XMLContentModel::gInvalidTrans &&
-                    fTransTable[i][k] != XMLContentModel::gInvalidTrans &&
+                if (fTransTable[i][k] != XMLContentModel::gInvalidTrans &&
                     conflictTable[j][k] == 0) {
 
                     // If this is text in a Schema mixed content model, skip 
it.

---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to