From 92cc08a5541f7663567ebc1e87f00ceb976fd971 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Fri, 14 Oct 2016 17:11:57 -0700 Subject: [PATCH] Fix some compiler warnings about signed comparisons --- Makefile | 2 +- main.cpp | 42 +++++++++++++++++++----------------------- main.hpp | 4 ++-- mbtiles.cpp | 3 +-- text.cpp | 2 +- tile.cpp | 27 ++++++++++++--------------- 6 files changed, 36 insertions(+), 44 deletions(-) diff --git a/Makefile b/Makefile index c1a86af..72f12b8 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ CXX := $(CXX) CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -std=c++11 LDFLAGS := $(LDFLAGS) -WARNING_FLAGS := -Wall -Wshadow +WARNING_FLAGS := -Wall -Wshadow -Wabsolute-value -Wsign-compare RELEASE_FLAGS := -O3 -DNDEBUG DEBUG_FLAGS := -O0 -DDEBUG -fno-inline-functions -fno-omit-frame-pointer diff --git a/main.cpp b/main.cpp index 9cccb98..3d1d5fd 100644 --- a/main.cpp +++ b/main.cpp @@ -67,8 +67,8 @@ struct source { std::string file; }; -int CPUS; -int TEMP_FILES; +size_t CPUS; +size_t TEMP_FILES; long long MAX_FILES; static long long diskfree; @@ -267,7 +267,7 @@ int calc_feature_minzoom(struct index *ix, struct drop_state *ds, int maxzoom, i return feature_minzoom; } -static void merge(struct mergelist *merges, int nmerges, unsigned char *map, FILE *indexfile, int bytes, long long nrec, char *geom_map, FILE *geom_out, long long *geompos, long long *progress, long long *progress_max, long long *progress_reported, int maxzoom, int basezoom, double droprate, double gamma, struct drop_state *ds) { +static void merge(struct mergelist *merges, size_t nmerges, unsigned char *map, FILE *indexfile, int bytes, long long nrec, char *geom_map, FILE *geom_out, long long *geompos, long long *progress, long long *progress_max, long long *progress_reported, int maxzoom, int basezoom, double droprate, double gamma, struct drop_state *ds) { struct mergelist *head = NULL; for (size_t i = 0; i < nmerges; i++) { @@ -312,7 +312,7 @@ struct sort_arg { long long indexpos; struct mergelist *merges; int indexfd; - int nmerges; + size_t nmerges; long long unit; int bytes; }; @@ -367,8 +367,7 @@ void do_read_parallel(char *map, long long len, long long initial_offset, const segs[0] = 0; segs[CPUS] = len; - int i; - for (i = 1; i < CPUS; i++) { + for (size_t i = 1; i < CPUS; i++) { segs[i] = len * i / CPUS; while (segs[i] < len && map[segs[i]] != '\n') { @@ -377,7 +376,7 @@ void do_read_parallel(char *map, long long len, long long initial_offset, const } volatile long long layer_seq[CPUS]; - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { // To preserve feature ordering, unique id for each segment // begins with that segment's offset into the input layer_seq[i] = segs[i] + initial_offset; @@ -387,11 +386,11 @@ void do_read_parallel(char *map, long long len, long long initial_offset, const pthread_t pthreads[CPUS]; std::vector > file_subkeys; - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { file_subkeys.push_back(std::set()); } - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { pja[i].jp = json_begin_map(map + segs[i], segs[i + 1] - segs[i]); pja[i].reading = reading; pja[i].layer_seq = &layer_seq[i]; @@ -427,7 +426,7 @@ void do_read_parallel(char *map, long long len, long long initial_offset, const } } - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { void *retval; if (pthread_join(pthreads[i], &retval) != 0) { @@ -706,18 +705,17 @@ void radix1(int *geomfds_in, int *indexfds_in, int inputs, int prefix, int split } unit = ((unit + page - 1) / page) * page; - int nmerges = (indexpos + unit - 1) / unit; + size_t nmerges = (indexpos + unit - 1) / unit; struct mergelist merges[nmerges]; - int a; - for (a = 0; a < nmerges; a++) { + for (size_t a = 0; a < nmerges; a++) { merges[a].start = merges[a].end = 0; } pthread_t pthreads[CPUS]; struct sort_arg args[CPUS]; - for (a = 0; a < CPUS; a++) { + for (size_t a = 0; a < CPUS; a++) { args[a].task = a; args[a].cpus = CPUS; args[a].indexpos = indexpos; @@ -733,7 +731,7 @@ void radix1(int *geomfds_in, int *indexfds_in, int inputs, int prefix, int split } } - for (a = 0; a < CPUS; a++) { + for (size_t a = 0; a < CPUS; a++) { void *retval; if (pthread_join(pthreads[a], &retval) != 0) { @@ -945,8 +943,7 @@ int read_input(std::vector &sources, char *fname, const char *layername, int ret = EXIT_SUCCESS; struct reader reader[CPUS]; - int i; - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { struct reader *r = reader + i; char metaname[strlen(tmpdir) + strlen("/meta.XXXXXXXX") + 1]; @@ -1045,7 +1042,7 @@ int read_input(std::vector &sources, char *fname, const char *layername, int initialized[CPUS]; unsigned initial_x[CPUS], initial_y[CPUS]; - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { initialized[i] = initial_x[i] = initial_y[i] = 0; } @@ -1298,7 +1295,7 @@ int read_input(std::vector &sources, char *fname, const char *layername, // (stderr, "Read 10000.00 million features\r", *progress_seq / 1000000.0); } - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { if (fclose(reader[i].metafile) != 0) { perror("fclose meta"); exit(EXIT_FAILURE); @@ -1367,7 +1364,7 @@ int read_input(std::vector &sources, char *fname, const char *layername, long long metapos = 0; long long poolpos = 0; - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { if (reader[i].metapos > 0) { void *map = mmap(NULL, reader[i].metapos, PROT_READ, MAP_PRIVATE, reader[i].metafd, 0); if (map == MAP_FAILED) { @@ -1718,8 +1715,7 @@ int read_input(std::vector &sources, char *fname, const char *layername, fd[0] = geomfd; size[0] = geomst.st_size; - int j; - for (j = 1; j < TEMP_FILES; j++) { + for (size_t j = 1; j < TEMP_FILES; j++) { fd[j] = -1; size[j] = 0; } @@ -1760,7 +1756,7 @@ int read_input(std::vector &sources, char *fname, const char *layername, midlon = (maxlon + minlon) / 2; long long file_bbox[4] = {UINT_MAX, UINT_MAX, 0, 0}; - for (i = 0; i < CPUS; i++) { + for (size_t i = 0; i < CPUS; i++) { if (reader[i].file_bbox[0] < file_bbox[0]) { file_bbox[0] = reader[i].file_bbox[0]; } diff --git a/main.hpp b/main.hpp index 2a75e1c..bde9390 100644 --- a/main.hpp +++ b/main.hpp @@ -12,5 +12,5 @@ void checkdisk(struct reader *r, int nreader); extern int geometry_scale; extern int quiet; -extern int CPUS; -extern int TEMP_FILES; +extern size_t CPUS; +extern size_t TEMP_FILES; diff --git a/mbtiles.cpp b/mbtiles.cpp index ae28413..141e2d9 100644 --- a/mbtiles.cpp +++ b/mbtiles.cpp @@ -236,8 +236,7 @@ void mbtiles_write_metadata(sqlite3 *outdb, const char *fname, int minzoom, int lnames.push_back(ai->first); } - int i; - for (i = 0; i < lnames.size(); i++) { + for (size_t i = 0; i < lnames.size(); i++) { if (i != 0) { aprintf(&buf, ", "); } diff --git a/text.cpp b/text.cpp index d8d5953..b676cdb 100644 --- a/text.cpp +++ b/text.cpp @@ -7,7 +7,7 @@ */ std::string check_utf8(std::string s) { for (size_t i = 0; i < s.size(); i++) { - int fail = 0; + size_t fail = 0; if ((s[i] & 0x80) == 0x80) { if ((s[i] & 0xE0) == 0xC0) { diff --git a/tile.cpp b/tile.cpp index f5ef4f3..44b4021 100644 --- a/tile.cpp +++ b/tile.cpp @@ -826,7 +826,7 @@ void find_common_edges(std::vector &partials, int z, int line_detail, d for (size_t m = necessary; m < l - 1; m++) { tmp.push_back(g[m]); } - for (size_t m = k; m < necessary; m++) { + for (ssize_t m = k; m < necessary; m++) { tmp.push_back(g[m]); } @@ -1667,10 +1667,9 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo FILE *sub[TEMP_FILES]; int subfd[TEMP_FILES]; - int j; - for (j = 0; j < TEMP_FILES; j++) { + for (size_t j = 0; j < TEMP_FILES; j++) { char geomname[strlen(tmpdir) + strlen("/geom.XXXXXXXX" XSTRINGIFY(INT_MAX)) + 1]; - sprintf(geomname, "%s/geom%d.XXXXXXXX", tmpdir, j); + sprintf(geomname, "%s/geom%zu.XXXXXXXX", tmpdir, j); subfd[j] = mkstemp(geomname); // printf("%s\n", geomname); if (subfd[j] < 0) { @@ -1685,17 +1684,17 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo unlink(geomname); } - int useful_threads = 0; + size_t useful_threads = 0; long long todo = 0; long long along = 0; - for (j = 0; j < TEMP_FILES; j++) { + for (size_t j = 0; j < TEMP_FILES; j++) { todo += geom_size[j]; if (geom_size[j] > 0) { useful_threads++; } } - int threads = CPUS; + size_t threads = CPUS; if (threads > TEMP_FILES / 4) { threads = TEMP_FILES / 4; } @@ -1726,7 +1725,7 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo struct dispatch *next; } dispatches[threads]; struct dispatch *dispatch_head = &dispatches[0]; - for (j = 0; j < threads; j++) { + for (size_t j = 0; j < threads; j++) { dispatches[j].tasks = NULL; dispatches[j].todo = 0; if (j + 1 < threads) { @@ -1736,7 +1735,7 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo } } - for (j = 0; j < TEMP_FILES; j++) { + for (size_t j = 0; j < TEMP_FILES; j++) { if (geom_size[j] == 0) { continue; } @@ -1764,8 +1763,7 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo write_tile_args args[threads]; int running = threads; - int thread; - for (thread = 0; thread < threads; thread++) { + for (size_t thread = 0; thread < threads; thread++) { args[thread].metabase = metabase; args[thread].stringpool = stringpool; args[thread].min_detail = min_detail; @@ -1808,7 +1806,7 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo int err = INT_MAX; - for (thread = 0; thread < threads; thread++) { + for (size_t thread = 0; thread < threads; thread++) { void *retval; if (pthread_join(pthreads[thread], &retval) != 0) { @@ -1820,7 +1818,7 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo } } - for (j = 0; j < TEMP_FILES; j++) { + for (size_t j = 0; j < TEMP_FILES; j++) { // Can be < 0 if there is only one source file, at z0 if (geomfd[j] >= 0) { if (close(geomfd[j]) != 0) { @@ -1848,8 +1846,7 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo } } - int j; - for (j = 0; j < TEMP_FILES; j++) { + for (size_t j = 0; j < TEMP_FILES; j++) { // Can be < 0 if there is only one source file, at z0 if (geomfd[j] >= 0) { if (close(geomfd[j]) != 0) {