Thread (183 messages) 183 messages, 9 authors, 2022-06-11

Re: [PATCH v7 1/5] unpack-objects.c: add dry_run mode for get_data()

From: Jiang Xin <hidden>
Date: 2021-12-31 03:06:36

On Wed, Dec 22, 2021 at 2:33 AM Han Xin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Han Xin <redacted>

In dry_run mode, "get_data()" is used to verify the inflation of data,
and the returned buffer will not be used at all and will be freed
immediately. Even in dry_run mode, it is dangerous to allocate a
full-size buffer for a large blob object. Therefore, only allocate a
low memory footprint when calling "get_data()" in dry_run mode.

Suggested-by: Jiang Xin <redacted>
Signed-off-by: Han Xin <redacted>
---
 builtin/unpack-objects.c            | 23 +++++++++---
 t/t5590-unpack-non-delta-objects.sh | 57 +++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 6 deletions(-)
 create mode 100755 t/t5590-unpack-non-delta-objects.sh
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index 4a9466295b..9104eb48da 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -96,15 +96,21 @@ static void use(int bytes)
        display_throughput(progress, consumed_bytes);
 }

-static void *get_data(unsigned long size)
+static void *get_data(size_t size, int dry_run)
After a offline talk with Han Xin, we feel it is not necessary to pass
"dry_run" as a argument, use the file-scope static variable directly
in "get_data()".
 {
        git_zstream stream;
-       void *buf = xmallocz(size);
+       size_t bufsize;
+       void *buf;

        memset(&stream, 0, sizeof(stream));
+       if (dry_run && size > 8192)
Use the file-scope static variable "dry_run".
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help