[PATCH setup, revised 2/2] Avoid clobbering installed.db when no setup.ini is found

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[PATCH setup, revised 2/2] Avoid clobbering installed.db when no setup.ini is found

Ken Brown-6
If no setup.ini is found, do_ini_thread is never called.  But we need
to ensure that packagedb::read is called, or else installed.db gets
emptied.  Move the calls to packagedb::read and other packagedb
functions from do_ini_thread to ChooserPage::OnInit.
---
 choose.cc | 8 +++++++-
 ini.cc    | 7 -------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/choose.cc b/choose.cc
index 619d7db..3a990d5 100644
--- a/choose.cc
+++ b/choose.cc
@@ -264,10 +264,16 @@ ChooserPage::OnInit ()
     }
 
   SetBusy ();
+  packagedb db;
+  db.makeBase();
+  db.read();
+  db.upgrade();
+  db.fixup_source_package_ids();
+  db.removeEmptyCategories();
+
   if (source == IDC_SOURCE_DOWNLOAD || source == IDC_SOURCE_LOCALDIR)
     packagemeta::ScanDownloadedFiles (MirrorOption);
 
-  packagedb db;
   db.setExistence ();
   db.fillMissingCategory ();
 
diff --git a/ini.cc b/ini.cc
index 5089e8b..0f8b927 100644
--- a/ini.cc
+++ b/ini.cc
@@ -352,13 +352,6 @@ do_ini_thread (HINSTANCE h, HWND owner)
   else
     ini_count = do_remote_ini (owner);
 
-  packagedb db;
-  db.makeBase();
-  db.read();
-  db.upgrade();
-  db.fixup_source_package_ids();
-  db.removeEmptyCategories();
-
   if (ini_count == 0)
     return false;
 
--
2.14.3