aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--URPM.xs10
2 files changed, 6 insertions, 6 deletions
diff --git a/NEWS b/NEWS
index d1bc041..94d6e8f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+- fix reporting size on big packages (mga#19571)
+
Version 5.07 - 14 April 2016
- add support for "elem" callback
diff --git a/URPM.xs b/URPM.xs
index 41a6b8c..bd0c6f8 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -201,13 +201,12 @@ get_arch(const Header header) {
return headerIsEntry(header, RPMTAG_SOURCERPM) ? get_name(header, RPMTAG_ARCH) : "src";
}
-static int
+static uint64_t
get_int(const Header header, rpmTag tag) {
struct rpmtd_s val;
- headerGet(header, tag, &val, HEADERGET_DEFAULT);
- uint32_t *ep = rpmtdGetUint32(&val);
- return ep ? *ep : 0;
+ headerGet(header, tag, &val, HEADERGET_ALLOC);
+ return rpmtdGetNumber(&val);
}
static size_t
@@ -755,8 +754,7 @@ pack_header(const URPM__Package pkg) {
const char *p = buff;
const char *nvr = headerGetAsString(pkg->h, RPMTAG_NVR);
const char *arch = get_arch(pkg->h);
-
- p += 1 + snprintf(buff, sizeof(buff), "%s.%s@%d@%d@%s", nvr, arch,
+ p += 1 + snprintf(buff, sizeof(buff), "%s.%s@%lu@%lu@%s", nvr, arch,
get_int(pkg->h, RPMTAG_EPOCH), get_int(pkg->h, RPMTAG_SIZE),
get_name(pkg->h, RPMTAG_GROUP));
pkg->info = memcpy(malloc(p-buff), buff, p-buff);