Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-23944

QSettings doesn't correct work with beginWriteArray/endArray

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Invalid
    • Icon: Not Evaluated Not Evaluated
    • None
    • 4.7.0
    • Core: Other
    • None

      QSettings save bad value of array's size, when program correct only one element of array.
      In attachment I add little program, wich show that error.

      For example:
      Program add 10 element to QSettings array(begin/endArray)
      After that program rewrite value for first element (begin/endArray).
      Now QSettings::beginReadArray(...) return 1, but must return 10.

      #include <QSettings>
      
      #define TEST_ARRAY "test_array"
      #define TEST_KEY "test_key"
      
      int main(int argc, char *argv[])
      {
      	QSettings settings("./test.ini",QSettings::IniFormat);
      	settings.beginWriteArray(TEST_ARRAY);
      	for(int i=0; i<10; ++i)
      	{
      		settings.setArrayIndex(i);
      		settings.setValue(TEST_KEY,i);
      	}
      	settings.endArray();
      	
      	int sizeBefore = settings.beginReadArray(TEST_ARRAY);
      	settings.endArray();
      	qDebug("Array size before = %d",sizeBefore);
      	
      	settings.beginWriteArray(TEST_ARRAY);
      	settings.setArrayIndex(0);
      	settings.setValue(TEST_KEY,-1);
      	settings.endArray();
      	
      	int sizeAfter = settings.beginReadArray(TEST_ARRAY);
      	settings.endArray();
      	
      	qDebug("Array size after = %d",sizeAfter);
      	
      	return 0;
      }
      

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Unassigned Unassigned
            trex_rus trex
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes