--- libaitio/inc/aitio.h 2012/07/31 16:42:38 1.22.2.16 +++ libaitio/inc/aitio.h 2012/07/31 20:13:33 1.22.2.17 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.22.2.16 2012/07/31 16:42:38 misho Exp $ +* $Id: aitio.h,v 1.22.2.17 2012/07/31 20:13:33 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -310,7 +310,7 @@ typedef struct { __val->val_type = f64; __val->val.f64 = _n; \ AIT_LEN(__val) = sizeof(double); } while (0) -#define AIT_COPY_VAL(_vl, _v) do { ait_val_t *__val = (_vl); assert(__val); \ +#define AIT_COPY_VAL(_vl, _v) do { ait_val_t *__val = (_vl); assert(__val); assert((_v)); \ memcpy(__val, (_v), sizeof(ait_val_t)); \ switch (AIT_TYPE(__val)) { \ case buffer: \ @@ -322,14 +322,14 @@ typedef struct { AIT_SET_STR(__val, \ AIT_GET_STR((_v))); \ break; \ - case data: \ - AIT_SET_DATA(__val, \ - AIT_GET_DATA((_v)), \ - AIT_LEN((_v))); \ - break; \ default: \ break; \ } \ + } while (0) +#define AIT_COPY_DATA(_vl, _v) do { AIT_COPY_VAL((_vl), (_v)); \ + if (AIT_TYPE((_vl)) == data) \ + AIT_SET_DATA((_vl), AIT_GET_DATA((_v)), \ + AIT_LEN((_v))); \ } while (0) #define AIT_INIT_VAL(_vl) (memset((_vl), 0, sizeof(ait_val_t)))