From 564e05eda5d2f5ea3dbc59829920116b299118c4 Mon Sep 17 00:00:00 2001 From: Martin Peach Date: Tue, 6 Jan 2015 21:40:27 +0000 Subject: Check for null pointer in unpackOSC_PrintTypeTaggedArgs, use uint32_t for OSC timetag components. svn path=/trunk/externals/mrpeach/; revision=17404 --- osc/packingOSC.h | 10 ++++------ osc/unpackOSC.c | 12 ++++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/osc/packingOSC.h b/osc/packingOSC.h index 1900226..a7b831c 100644 --- a/osc/packingOSC.h +++ b/osc/packingOSC.h @@ -27,13 +27,10 @@ This is the size of a static array. If you exceed this limit you'll get an error message. */ #define MAX_BUNDLE_NESTING 32 -/* You may have to redefine this typedef if ints on your system - aren't 4 bytes. */ -typedef unsigned int uint4; typedef struct { - uint4 seconds; - uint4 fraction; + uint32_t seconds; + uint32_t fraction; } OSCTimeTag; typedef union @@ -42,4 +39,5 @@ typedef union float f; } intfloat32; -#endif // _PACKINGOSC \ No newline at end of file +#endif // _PACKINGOSC +/* end of packingOSC.h */ diff --git a/osc/unpackOSC.c b/osc/unpackOSC.c index 45405a7..a378b0e 100644 --- a/osc/unpackOSC.c +++ b/osc/unpackOSC.c @@ -64,7 +64,7 @@ The OSC webpage is http://cnmat.cnmat.berkeley.edu/OpenSoundControl on OSX anyway. */ - +//#define DEBUG #include "packingOSC.h" @@ -188,12 +188,12 @@ static void unpackOSC_list(t_unpackOSC *x, t_symbol *s, int argc, t_atom *argv) /* Print the time tag */ #ifdef DEBUG - printf("unpackOSC: [ %lx%08lx\n", ntohl(*((unsigned long *)(buf+8))), - ntohl(*((unsigned long *)(buf+12)))); + printf("unpackOSC: [ %x.%0x\n", ntohl(*((uint32_t *)(buf+8))), + ntohl(*((uint32_t *)(buf+12)))); #endif /* convert the timetag into a millisecond delay from now */ - tt.seconds = ntohl(*((unsigned long *)(buf+8))); - tt.fraction = ntohl(*((unsigned long *)(buf+12))); + tt.seconds = ntohl(*((uint32_t *)(buf+8))); + tt.fraction = ntohl(*((uint32_t *)(buf+12))); /* pd can use a delay in milliseconds */ outlet_float(x->x_delay_out, unpackOSC_DeltaTime(tt)); /* Note: if we wanted to actually use the time tag as a little-endian @@ -347,7 +347,7 @@ static void unpackOSC_PrintTypeTaggedArgs(t_unpackOSC *x, void *v, int n) } p = unpackOSC_DataAfterAlignedString(typeTags, typeTags+n); - + if (p == NULL) return; /* malformed message */ for (thisType = typeTags + 1; *thisType != 0; ++thisType) { switch (*thisType) -- cgit v1.2.1