summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--Makefile4
-rwxr-xr-xtravis.sh12
-rw-r--r--upb/msg.c23
-rw-r--r--upb/upb.c6
5 files changed, 30 insertions, 16 deletions
diff --git a/.travis.yml b/.travis.yml
index e43855e..053b130 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -21,3 +21,4 @@ env:
- UPB_TRAVIS_BUILD=ndebug
- UPB_TRAVIS_BUILD=coverage
- UPB_TRAVIS_BUILD=genfiles
+ - UPB_TRAVIS_BUILD=amalgamated
diff --git a/Makefile b/Makefile
index 354d08c..09b71c4 100644
--- a/Makefile
+++ b/Makefile
@@ -534,3 +534,7 @@ amalgamate: upb.c upb.h
upb.c upb.h: $(AMALGAMATE_SRCS)
$(E) AMALGAMATE $@
$(Q) ./tools/amalgamate.py "" "" $^
+
+amalgamated: upb.c upb.h
+ $(E) CC upb.c
+ $(Q) $(CC) -o upb.o -c upb.c $(WARNFLAGS)
diff --git a/travis.sh b/travis.sh
index 5c099a2..413015a 100755
--- a/travis.sh
+++ b/travis.sh
@@ -107,6 +107,17 @@ ndebug_script() {
make test
}
+# Tests the amalgamated build (this ensures that the different .c files
+# don't have symbols or macros that conflict with each other.
+amalgamated_install() {
+ :
+}
+amalgamated_script() {
+ # Override of USER_CPPFLAGS removes -UNDEBUG.
+ export USER_CPPFLAGS="-UNDEBUG"
+ make amalgamated
+}
+
# A run that executes with coverage support and uploads to coveralls.io
coverage_install() {
sudo apt-get update -qq
@@ -145,6 +156,7 @@ if [ "$1" == "local" ]; then
run_config "lua"
run_config "ndebug"
run_config "genfiles"
+ run_config "amalgamated"
exit
fi
diff --git a/upb/msg.c b/upb/msg.c
index 5fa9bc8..39e3035 100644
--- a/upb/msg.c
+++ b/upb/msg.c
@@ -26,7 +26,7 @@ void *upb_map_pack(const upb_map *map, void *p, size_t *ofs, size_t size);
#define CHARPTR_AT(msg, ofs) ((char*)msg + ofs)
#define ENCODE_MAX_NESTING 64
-#define CHECK_RETURN(x) if (!(x)) { return false; }
+#define CHECK_TRUE(x) if (!(x)) { return false; }
/** upb_msgval ****************************************************************/
@@ -492,7 +492,7 @@ struct upb_visitor {
upb_sink *sink;
};
-static upb_selector_t getsel(const upb_fielddef *f, upb_handlertype_t type) {
+static upb_selector_t getsel2(const upb_fielddef *f, upb_handlertype_t type) {
upb_selector_t ret;
bool ok = upb_handlers_getselector(f, type, &ret);
UPB_ASSERT(ok);
@@ -572,34 +572,31 @@ static bool upb_visitor_visitmsg2(const upb_msg *msg,
} else if (upb_fielddef_isstring(f)) {
/* TODO putstr(); */
} else {
- upb_selector_t sel = getsel(f, upb_handlers_getprimitivehandlertype(f));
+ upb_selector_t sel = getsel2(f, upb_handlers_getprimitivehandlertype(f));
UPB_ASSERT(upb_fielddef_isprimitive(f));
switch (upb_fielddef_type(f)) {
case UPB_TYPE_FLOAT:
- CHECK_RETURN(upb_sink_putfloat(sink, sel, upb_msgval_getfloat(val)));
+ CHECK_TRUE(upb_sink_putfloat(sink, sel, upb_msgval_getfloat(val)));
break;
case UPB_TYPE_DOUBLE:
- CHECK_RETURN(
- upb_sink_putdouble(sink, sel, upb_msgval_getdouble(val)));
+ CHECK_TRUE(upb_sink_putdouble(sink, sel, upb_msgval_getdouble(val)));
break;
case UPB_TYPE_BOOL:
- CHECK_RETURN(upb_sink_putbool(sink, sel, upb_msgval_getbool(val)));
+ CHECK_TRUE(upb_sink_putbool(sink, sel, upb_msgval_getbool(val)));
break;
case UPB_TYPE_ENUM:
case UPB_TYPE_INT32:
- CHECK_RETURN(upb_sink_putint32(sink, sel, upb_msgval_getint32(val)));
+ CHECK_TRUE(upb_sink_putint32(sink, sel, upb_msgval_getint32(val)));
break;
case UPB_TYPE_UINT32:
- CHECK_RETURN(
- upb_sink_putuint32(sink, sel, upb_msgval_getuint32(val)));
+ CHECK_TRUE(upb_sink_putuint32(sink, sel, upb_msgval_getuint32(val)));
break;
case UPB_TYPE_INT64:
- CHECK_RETURN(upb_sink_putint64(sink, sel, upb_msgval_getint64(val)));
+ CHECK_TRUE(upb_sink_putint64(sink, sel, upb_msgval_getint64(val)));
break;
case UPB_TYPE_UINT64:
- CHECK_RETURN(
- upb_sink_putuint64(sink, sel, upb_msgval_getuint64(val)));
+ CHECK_TRUE(upb_sink_putuint64(sink, sel, upb_msgval_getuint64(val)));
break;
case UPB_TYPE_STRING:
case UPB_TYPE_BYTES:
diff --git a/upb/upb.c b/upb/upb.c
index c24ac04..97f6c61 100644
--- a/upb/upb.c
+++ b/upb/upb.c
@@ -104,7 +104,7 @@ upb_alloc upb_alloc_global = {&upb_global_allocfunc};
/* Be conservative and choose 16 in case anyone is using SSE. */
static const size_t maxalign = 16;
-static size_t align_up(size_t size) {
+static size_t align_up_max(size_t size) {
return ((size + maxalign - 1) / maxalign) * maxalign;
}
@@ -128,7 +128,7 @@ static void upb_arena_addblock(upb_arena *a, void *ptr, size_t size,
block->next = a->block_head;
block->size = size;
- block->used = align_up(sizeof(mem_block));
+ block->used = align_up_max(sizeof(mem_block));
block->owned = owned;
a->block_head = block;
@@ -161,7 +161,7 @@ static void *upb_arena_doalloc(upb_alloc *alloc, void *ptr, size_t oldsize,
return NULL; /* We are an arena, don't need individual frees. */
}
- size = align_up(size);
+ size = align_up_max(size);
/* TODO(haberman): special-case if this is a realloc of the last alloc? */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback