+/** @brief Allocate memory
+ * @param count Number of objects to allocate
+ * @param size Size of one object
+ * @return Pointer to allocated memory
+ *
+ * Terminates the process on error. IMPORTANT: the allocated memory is NOT
+ * 0-filled (unlike @c calloc()).
+ */
+void *xcalloc_noptr(size_t count, size_t size) {
+ if(count > SIZE_MAX / size)
+ fatal(0, "excessively large calloc");
+ return xmalloc_noptr(count * size);
+}
+
+/** @brief Reallocate memory
+ * @param ptr Block to reallocated
+ * @param n Bytes to allocate
+ * @return Pointer to allocated memory
+ *
+ * Terminates the processf on error. It is NOT guaranteed that any
+ * additional memory allocated is 0-filled. The block must have been
+ * allocated with xmalloc_noptr() (or xrealloc_noptr()) initially.
+ */