diff --git a/Makefile b/Makefile index 75195b4..0ba6bf1 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,6 @@ endif UNAME := $(shell uname) ifeq ($(UNAME), Linux) - include Makefile.cpufeatures CPPFLAGS += -D_DEFAULT_SOURCE LIBS += -lrt LIBS_USB += -lusb-1.0 diff --git a/debian-jessie/rules b/debian-jessie/rules index f03be8a..3072b00 100755 --- a/debian-jessie/rules +++ b/debian-jessie/rules @@ -15,7 +15,9 @@ DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk override_dh_auto_build: - dh_auto_build -- RTLSDR=yes BLADERF=yes HACKRF=no LIMESDR=no DUMP1090_VERSION=$(DEB_VERSION) + # jessie's gcc doesn't support the compiler flags needed for ARM-specific starch flavors; + # turn off runtime CPU detection + dh_auto_build -- RTLSDR=yes BLADERF=yes HACKRF=no LIMESDR=no DUMP1090_VERSION=$(DEB_VERSION) CPUFEATURES=no override_dh_install: dh_install diff --git a/debian-stretch/rules b/debian-stretch/rules index f03be8a..98002a2 100755 --- a/debian-stretch/rules +++ b/debian-stretch/rules @@ -15,7 +15,9 @@ DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk override_dh_auto_build: - dh_auto_build -- RTLSDR=yes BLADERF=yes HACKRF=no LIMESDR=no DUMP1090_VERSION=$(DEB_VERSION) + # starch's gcc doesn't support the compiler flags needed for ARM-specific starch flavors; + # turn off runtime CPU detection + dh_auto_build -- RTLSDR=yes BLADERF=yes HACKRF=no LIMESDR=no DUMP1090_VERSION=$(DEB_VERSION) CPUFEATURES=no override_dh_install: dh_install diff --git a/net_io.c b/net_io.c index d482998..8cb1e28 100644 --- a/net_io.c +++ b/net_io.c @@ -1828,15 +1828,20 @@ static char * appendStatsJson(char *p, } char *generateStatsJson(const char *url_path, int *len) { - const size_t bufsize = 4096; - char *buf = malloc(bufsize), *p = buf, *end = buf + bufsize; - if (!buf) { + MODES_NOTUSED(url_path); + + int buflen = 8192; + char *buf, *p, *end; + + retry: + if (!(buf = malloc(buflen))) { // allocation failed, give up *len = 0; return NULL; } - MODES_NOTUSED(url_path); + p = buf; + end = buf + buflen; p = safe_snprintf(p, end, "{\n"); p = appendStatsJson(p, end, &Modes.stats_latest, "latest"); @@ -1854,12 +1859,15 @@ char *generateStatsJson(const char *url_path, int *len) { p = appendStatsJson(p, end, &Modes.stats_alltime, "total"); p = safe_snprintf(p, end, "\n}\n"); - if (p <= end) { - *len = p-buf; - } else { - *len = 0; // ran out of buffer space, give up + int used = p - buf; + if (p >= end) { + // overran the buffer + buflen = used + 50; + free(buf); + goto retry; } + *len = used; return buf; }