|
@@ -51,14 +51,16 @@
|
|
|
#define test_memeq(expr1, expr2, len) test_mem_op((expr1), ==, (expr2), len)
|
|
|
#define test_memneq(expr1, expr2, len) test_mem_op((expr1), !=, (expr2), len)
|
|
|
|
|
|
+/* As test_mem_op, but decodes 'hex' before comparing. There must be a
|
|
|
+ * local char* variable called mem_op_hex_tmp for this to work. */
|
|
|
#define test_mem_op_hex(expr1, op, hex) \
|
|
|
STMT_BEGIN \
|
|
|
size_t length = strlen(hex); \
|
|
|
- char *value2 = tor_malloc(length/2); \
|
|
|
+ tor_free(mem_op_hex_tmp); \
|
|
|
+ mem_op_hex_tmp = tor_malloc(length/2); \
|
|
|
tor_assert((length&1)==0); \
|
|
|
- base16_decode(value2, length/2, hex, length); \
|
|
|
- test_mem_op(expr1, op, value2, length/2); \
|
|
|
- tor_free(value2); \
|
|
|
+ base16_decode(mem_op_hex_tmp, length/2, hex, length); \
|
|
|
+ test_mem_op(expr1, op, mem_op_hex_tmp, length/2); \
|
|
|
STMT_END
|
|
|
|
|
|
#define test_memeq_hex(expr1, hex) test_mem_op_hex(expr1, ==, hex)
|