From 32985c59782202b9c1471316f2a9a0e0895696af Mon Sep 17 00:00:00 2001 From: JGZYES Date: Tue, 1 Sep 2026 19:10:28 +0800 Subject: [PATCH] diag: log errno when popen/malloc fails in run_capture (Linux mirror lookup) --- src/http.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/http.c b/src/http.c index 2bf50ed..d54cd05 100644 --- a/src/http.c +++ b/src/http.c @@ -3,6 +3,7 @@ #include #include #include +#include #ifdef _WIN32 #include @@ -29,10 +30,18 @@ /* Read all output of `cmd` into a malloc'd buffer. */ static char *run_capture(const char *cmd, size_t *out_len) { FILE *f = PMM_POPEN(cmd, "rb"); - if (!f) return NULL; + if (!f) { + if (getenv("PMM_DEBUG")) + fprintf(stderr, "[http] popen(cmd) failed: errno=%d %s\n", errno, strerror(errno)); + return NULL; + } size_t cap = 64 * 1024, len = 0; char *buf = malloc(cap); - if (!buf) { PMM_PCLOSE(f); return NULL; } + if (!buf) { + if (getenv("PMM_DEBUG")) + fprintf(stderr, "[http] malloc(%zu) failed: errno=%d %s\n", cap, errno, strerror(errno)); + PMM_PCLOSE(f); return NULL; + } for (;;) { if (len + 4096 > cap) { cap *= 2;