+// realloc and set to 0\r
+inline void *urecalloc(void *ptr, size_t o_size, size_t n_size)\r
+ {\r
+ if (o_size == n_size)\r
+ return ptr;\r
+ \r
+ void *dest = realloc(ptr,n_size);\r
+ //don't fail if we requested size 0\r
+ if (dest == NULL && n_size > 0 )\r
+ throw std::bad_alloc();\r
+ // Initialize the new area with 0\r
+ void * n_area_start = &(((char*) dest)[o_size]);\r
+ memset(n_area_start,0, n_size - o_size);\r
+ return dest;\r
+ }\r