printf("%" PRIu64 "\n", hardware_memlimit_get());
else
printf(_("%s MiB (%s bytes)\n"),
- uint64_to_str(hardware_memlimit_get() >> 20, 0),
+ uint64_to_str(
+ round_up_to_mib(hardware_memlimit_get()), 0),
uint64_to_str(hardware_memlimit_get(), 1));
tuklib_exit(E_SUCCESS, E_ERROR, verbosity != V_SILENT);
if (long_help) {
printf(_(
"On this system and configuration, this program will use a maximum of roughly\n"
-"%s MiB RAM and "), uint64_to_str(hardware_memlimit_get() / (1024 * 1024), 0));
+"%s MiB RAM and "), uint64_to_str(round_up_to_mib(hardware_memlimit_get()), 0));
printf(N_("one thread.\n\n", "%s threads.\n\n",
hardware_threadlimit_get()),
uint64_to_str(hardware_threadlimit_get(), 0));
static void lzma_attribute((noreturn))
help(void)
{
+ // Round up to the next MiB and do it correctly also with UINT64_MAX.
+ const uint64_t mem_mib = (memlimit >> 20)
+ + ((memlimit & ((UINT32_C(1) << 20) - 1)) != 0);
+
printf(
"Usage: %s [OPTION]... [FILE]...\n"
"Uncompress files in the ." TOOL_FORMAT " format to the standard output.\n"
"%" PRIu64 " MiB RAM.\n"
"\n"
"Report bugs to <" PACKAGE_BUGREPORT "> (in English or Finnish).\n"
-PACKAGE_NAME " home page: <" PACKAGE_URL ">\n",
- progname, memlimit / (1024 * 1024));
+PACKAGE_NAME " home page: <" PACKAGE_URL ">\n", progname, mem_mib);
tuklib_exit(EXIT_SUCCESS, EXIT_FAILURE, display_errors);
}