summaryrefslogtreecommitdiffstats
path: root/libmsi/libmsi-summary-info.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-31 13:36:49 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:08 +0100
commite18779f19ef2c2e12b1a4ba294944301cf0c4696 (patch)
tree794786dd3e163614dee012345244efd02f509dff /libmsi/libmsi-summary-info.c
parentd989d5e017c05140201a174c9a5053accc30f61a (diff)
downloadmsitools-e18779f19ef2c2e12b1a4ba294944301cf0c4696.tar.gz
msitools-e18779f19ef2c2e12b1a4ba294944301cf0c4696.tar.xz
msitools-e18779f19ef2c2e12b1a4ba294944301cf0c4696.zip
libmsi: allow creation of SummaryInfo without database
Diffstat (limited to 'libmsi/libmsi-summary-info.c')
-rw-r--r--libmsi/libmsi-summary-info.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/libmsi/libmsi-summary-info.c b/libmsi/libmsi-summary-info.c
index 6ff6200..50f07ce 100644
--- a/libmsi/libmsi-summary-info.c
+++ b/libmsi/libmsi-summary-info.c
@@ -120,10 +120,12 @@ libmsi_summary_info_constructed (GObject *object)
unsigned r;
/* read the stream... if we fail, we'll start with an empty property set */
- r = msi_get_raw_stream (self->database, szSumInfo, &stm);
- if (r == 0) {
- load_summary_info (self, stm);
- g_object_unref (G_OBJECT (stm));
+ if (self->database) {
+ r = msi_get_raw_stream (self->database, szSumInfo, &stm);
+ if (r == 0) {
+ load_summary_info (self, stm);
+ g_object_unref (G_OBJECT (stm));
+ }
}
G_OBJECT_CLASS (libmsi_summary_info_parent_class)->constructed (object);
@@ -1026,7 +1028,7 @@ end:
* @si: a #LibmsiSummaryInfo
* @error: (allow-none): #GError to set on error, or %NULL
*
- * Save summary informations.
+ * Save summary informations to the associated database.
*
* Returns: %TRUE on success
**/
@@ -1040,6 +1042,12 @@ libmsi_summary_info_persist (LibmsiSummaryInfo *si, GError **error)
TRACE("%p\n", si);
+ if (!si->database) {
+ g_set_error (error, LIBMSI_RESULT_ERROR,
+ LIBMSI_RESULT_FUNCTION_FAILED, "No database associated");
+ return FALSE;
+ }
+
g_object_ref (si);
ret = suminfo_persist (si);
g_object_unref (si);
@@ -1052,7 +1060,7 @@ libmsi_summary_info_persist (LibmsiSummaryInfo *si, GError **error)
/**
* libmsi_summary_info_new:
- * @database: a #LibmsiDatabase
+ * @database: (allow-none): a #LibmsiDatabase
* @update_count: number of changes allowed
* @error: (allow-none): #GError to set on error, or %NULL
*
@@ -1064,7 +1072,7 @@ libmsi_summary_info_new (LibmsiDatabase *database, unsigned update_count,
{
LibmsiSummaryInfo *self;
- g_return_val_if_fail (LIBMSI_IS_DATABASE (database), NULL);
+ g_return_val_if_fail (!database || LIBMSI_IS_DATABASE (database), NULL);
g_return_val_if_fail (!error || *error == NULL, NULL);
self = g_object_new (LIBMSI_TYPE_SUMMARY_INFO,