Fixed a bug reading gnumeric files.
[pspp] / src / data / gnumeric-reader.c
index 1904dabc1232275c251ed04153280114e70c1f00..4ddd80be00c6cc8225bbeacf97eb5656022c16ea 100644 (file)
@@ -145,6 +145,7 @@ process_node (struct gnumeric_reader *r)
       if (0 == xmlStrcasecmp (name, _xml("gnm:Sheet")) &&
          XML_READER_TYPE_ELEMENT  == r->node_type)
        {
+         ++r->sheet_index;
          r->state = STATE_SHEET_START;
        }
       break;
@@ -154,21 +155,15 @@ process_node (struct gnumeric_reader *r)
        {
          r->state = STATE_SHEET_NAME;
        }
-      else if (0 == xmlStrcasecmp (name, _xml("gnm:Name"))  &&
-              XML_READER_TYPE_END_ELEMENT  == r->node_type)
-       {
-         r->state = STATE_INIT;
-       }
       break;
     case STATE_SHEET_NAME:
       if (0 == xmlStrcasecmp (name, _xml("gnm:Name"))  &&
          XML_READER_TYPE_END_ELEMENT  == r->node_type)
        {
-         r->state = STATE_SHEET_START;
+         r->state = STATE_INIT;
        }
       else if (XML_READER_TYPE_TEXT == r->node_type)
        {
-         ++r->sheet_index;
          if ( r->target_sheet != NULL)
            {
              xmlChar *value = xmlTextReaderValue (r->xtr);
@@ -229,7 +224,9 @@ process_node (struct gnumeric_reader *r)
     case STATE_CELL:
       if (0 == xmlStrcasecmp (name, _xml("gnm:Cell"))  &&
                              XML_READER_TYPE_END_ELEMENT  == r->node_type)
-       r->state = STATE_CELLS_START;
+       {
+         r->state = STATE_CELLS_START;
+       }
       break;
     default:
       break;