- copy parser swtab fix from Matz into other files
authorMichael Schroeder <mls@suse.de>
Fri, 19 Sep 2008 14:18:48 +0000 (14:18 +0000)
committerMichael Schroeder <mls@suse.de>
Fri, 19 Sep 2008 14:18:48 +0000 (14:18 +0000)
tools/repo_deltainfoxml.c
tools/repo_patchxml.c
tools/repo_products.c
tools/repo_repomdxml.c
tools/repo_rpmmd.c
tools/repo_updateinfoxml.c

index b14bb9a..2211b5d 100644 (file)
@@ -290,10 +290,11 @@ startElement(void *userData, const char *name, const char **atts)
     }
 
   pd->depth++;
+  if (!pd->swtab[pd->state])
+    return;
   for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)  /* find name in statetable */
     if (!strcmp(sw->ename, name))
       break;
-  
   if (sw->from != pd->state)
     {
 #if 1
index e03613f..10cc2b7 100644 (file)
@@ -355,6 +355,8 @@ startElement(void *userData, const char *name, const char **atts)
     return;
 
   pd->depth++;
+  if (!pd->swtab[pd->state])
+    return;
   for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)  /* find name in statetable */
     if (!strcmp(sw->ename, name))
       break;
index 7e0a296..3f71fe2 100644 (file)
@@ -183,22 +183,21 @@ startElement(void *userData, const char *name, const char **atts)
     }
 
   pd->depth++;
-  if (!(sw = pd->swtab[pd->state])) /* no statetable -> no substates */
+  if (!pd->swtab[pd->state])   /* no statetable -> no substates */
     {
 #if 0
-      fprintf(stderr, "into unknown: [?]%s (from: ?, state %d)\n", name, pd->state);
+      fprintf(stderr, "into unknown: %s (from: %d)\n", name, pd->state);
 #endif
       return;
     }
-  for (; sw->from == pd->state; sw++)  /* find name in statetable */
+  for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)  /* find name in statetable */
     if (!strcmp(sw->ename, name))
       break;
 
   if (sw->from != pd->state)
     {
 #if 0
-      fprintf(stderr, "into unknown: [%d]%s (from: %d, state %d)\n", sw->to, name, sw->from, pd->state);
-      exit( 1 );
+      fprintf(stderr, "into unknown: %s (from: %d)\n", name, pd->state);
 #endif
       return;
     }
index f387406..dce33c2 100644 (file)
@@ -163,7 +163,7 @@ startElement(void *userData, const char *name, const char **atts)
   int expire = 0;
 
 #if 0
-      fprintf(stderr, "start: [%d]%s\n", pd->state, name);
+  fprintf(stderr, "start: [%d]%s\n", pd->state, name);
 #endif
   if (pd->depth != pd->statedepth)
     {
@@ -172,6 +172,8 @@ startElement(void *userData, const char *name, const char **atts)
     }
 
   pd->depth++;
+  if (!pd->swtab[pd->state])
+    return;
   for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)  /* find name in statetable */
     if (!strcmp(sw->ename, name))
       break;
@@ -179,7 +181,7 @@ startElement(void *userData, const char *name, const char **atts)
   if (sw->from != pd->state)
     {
 #if 1
-      fprintf(stderr, "into unknown: [%d]%s (from: %d)\n", sw->to, name, sw->from);
+      fprintf(stderr, "into unknown: %s (from: %d)\n", name, pd->state);
       exit( 1 );
 #endif
       return;
index 80b587d..d3fe112 100644 (file)
@@ -643,6 +643,8 @@ startElement(void *userData, const char *name, const char **atts)
     return;
 
   pd->depth++;
+  if (!pd->swtab[pd->state])
+    return;
   for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)
     if (!strcmp(sw->ename, name))
       break;
index b96b972..cc442fc 100644 (file)
@@ -216,7 +216,7 @@ startElement(void *userData, const char *name, const char **atts)
   /*const char *str; */
 
 #if 0
-      fprintf(stderr, "start: [%d]%s\n", pd->state, name);
+  fprintf(stderr, "start: [%d]%s\n", pd->state, name);
 #endif
   if (pd->depth != pd->statedepth)
     {
@@ -225,15 +225,16 @@ startElement(void *userData, const char *name, const char **atts)
     }
 
   pd->depth++;
+  if (!pd->swtab[pd->state])
+    return;
   for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)  /* find name in statetable */
     if (!strcmp(sw->ename, name))
       break;
-  
 
   if (sw->from != pd->state)
     {
 #if 1
-      fprintf(stderr, "into unknown: [%d]%s (from: %d)\n", sw->to, name, sw->from);
+      fprintf(stderr, "into unknown: %s (from: %d)\n", name, pd->state);
       exit( 1 );
 #endif
       return;