diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c index ee0552f6..adb9d70c 100644 --- a/src/libostree/ostree-core.c +++ b/src/libostree/ostree-core.c @@ -355,7 +355,7 @@ GBytes * _ostree_zlib_file_header_new (GFileInfo *file_info, GVariant *xattrs) { - guint64 size = g_file_info_get_size (file_info); + guint64 size = 0; guint32 uid = g_file_info_get_attribute_uint32 (file_info, "unix::uid"); guint32 gid = g_file_info_get_attribute_uint32 (file_info, "unix::gid"); guint32 mode = g_file_info_get_attribute_uint32 (file_info, "unix::mode"); @@ -366,6 +366,9 @@ _ostree_zlib_file_header_new (GFileInfo *file_info, else symlink_target = ""; + if (g_file_info_has_attribute (file_info, "standard::size")) + size = g_file_info_get_size (file_info); + g_autoptr(GVariant) tmp_xattrs = NULL; if (xattrs == NULL) tmp_xattrs = g_variant_ref_sink (g_variant_new_array (G_VARIANT_TYPE ("(ayay)"), NULL, 0)); @@ -550,7 +553,9 @@ ostree_raw_file_to_content_stream (GInputStream *input, g_autoptr(GBytes) file_header = _ostree_file_header_new (file_info, xattrs); *out_input = header_and_input_to_stream (file_header, input); if (out_length) - *out_length = g_bytes_get_size (file_header) + g_file_info_get_size (file_info); + *out_length = g_bytes_get_size (file_header); + if (out_length && g_file_info_has_attribute (file_info, "standard::size")) + *out_length += g_file_info_get_size (file_info); return TRUE; } diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index 2d4347b0..32119c47 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -1211,7 +1211,8 @@ write_content_object (OstreeRepo *self, /* Update statistics */ g_mutex_lock (&self->txn_lock); self->txn.stats.content_objects_written++; - self->txn.stats.content_bytes_written += g_file_info_get_size (file_info); + if (g_file_info_has_attribute (file_info, "standard::size")) + self->txn.stats.content_bytes_written += g_file_info_get_size (file_info); self->txn.stats.content_objects_total++; g_mutex_unlock (&self->txn_lock);