Enhance my 'sresize' macro so that it type-checks the pointer you pass
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 18 May 2012 19:51:11 +0000 (19:51 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 18 May 2012 19:51:11 +0000 (19:51 +0000)
_in_ to it, as well as the one it returns. Why have I never thought of
doing that before?!

git-svn-id: svn://svn.tartarus.org/sgt/putty@9539 cda61777-01e9-0310-a592-d414129be87e

puttymem.h

index 06c294d..6ef3f79 100644 (file)
@@ -37,6 +37,7 @@ void safefree(void *);
  */
 #define snew(type) ((type *)snmalloc(1, sizeof(type)))
 #define snewn(n, type) ((type *)snmalloc((n), sizeof(type)))
-#define sresize(ptr, n, type) ((type *)snrealloc((ptr), (n), sizeof(type)))
+#define sresize(ptr, n, type) \
+    ((type *)snrealloc((sizeof((type *)0 == (ptr)), (ptr)), (n), sizeof(type)))
 
 #endif