commit 17e8cb0097f31374e7b44e957b026f8ed11f5e0f Author: Zack Weinberg zackw@panix.com Date: Thu Jul 14 13:23:58 2011 -0700
don't reinvent offsetof --- src/network.c | 4 ++-- src/util.h | 12 +++--------- 2 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/src/network.c b/src/network.c index ea06bc2..6a8afa6 100644 --- a/src/network.c +++ b/src/network.c @@ -93,7 +93,7 @@ close_all_connections(void) { /** Traverse the dll and close all connections */ while (conn_list.head) { - conn_t *conn = UPCAST(conn_t, dll_node, conn_list.head); + conn_t *conn = DOWNCAST(conn_t, dll_node, conn_list.head); conn_free(conn); /* removes it */ } assert(!n_connections); @@ -169,7 +169,7 @@ free_all_listeners(void)
/* Iterate listener doubly linked list and free them all. */ while (listener_list.head) { - listener_t *listener = UPCAST(listener_t, dll_node, listener_list.head); + listener_t *listener = DOWNCAST(listener_t, dll_node, listener_list.head); listener_free(listener); }
diff --git a/src/util.h b/src/util.h index ff9df22..b526dbf 100644 --- a/src/util.h +++ b/src/util.h @@ -6,7 +6,7 @@ #define UTIL_H
#include <stdarg.h> /* for va_list */ -#include <stddef.h> /* for size_t etc */ +#include <stddef.h> /* size_t, offsetof, NULL, etc */
#ifndef __GNUC__ #define __attribute__(x) /* nothing */ @@ -37,14 +37,8 @@ int obfs_snprintf(char *str, size_t size,
/***** Doubly Linked List stuff. *****/
-#define OFFSETOF(container_type, element) \ - (((char*)&((container_type*)0)->element) - ((char*) ((container_type*)0))) - -#define UPCAST(container_type, element, ptr) \ - (container_type*) ( \ - ((char*)ptr) - OFFSETOF(container_type, element) \ - ) - +#define DOWNCAST(container_type, element, ptr) \ + (container_type*)( ((char*)ptr) - offsetof(container_type, element) )
/** A doubly linked list node. [algorithms ripped off Wikipedia (Doubly_linked_list) ] */
tor-commits@lists.torproject.org