diff --git a/ndn-cpp/c/util/DynamicUCharArray.c b/ndn-cpp/c/util/DynamicUCharArray.c
index ac1e451..83016ce 100644
--- a/ndn-cpp/c/util/DynamicUCharArray.c
+++ b/ndn-cpp/c/util/DynamicUCharArray.c
@@ -8,6 +8,21 @@
 
 char *ndn_DynamicUCharArray_reallocArray(struct ndn_DynamicUCharArray *self, unsigned int length)
 {
-  // TODO: implement.
-  return "ndn_DynamicUCharArray_reallocArray: realloc function pointer not supplied";
+  if (!self->realloc)
+    return "ndn_DynamicUCharArray_reallocArray: realloc function pointer not supplied";
+  
+  // See if double is enough.
+  unsigned int newLength = self->length * 2;
+  if (length > newLength)
+    // The needed length is much greater, so use it.
+    newLength = length;
+    
+  unsigned char *newArray = (*self->realloc)(self->array, newLength);
+  if (!newArray)
+    return "ndn_DynamicUCharArray_reallocArray: realloc failed";
+  
+  self->array = newArray;
+  self->length = newLength;
+  
+  return 0;
 }
\ No newline at end of file
diff --git a/ndn-cpp/c/util/DynamicUCharArray.h b/ndn-cpp/c/util/DynamicUCharArray.h
index 67060fa..f5270d4 100644
--- a/ndn-cpp/c/util/DynamicUCharArray.h
+++ b/ndn-cpp/c/util/DynamicUCharArray.h
@@ -16,9 +16,10 @@
 struct ndn_DynamicUCharArray {
   unsigned char *array; /**< the allocated array buffer */
   unsigned int length;  /**< the length of the allocated array buffer */
-  unsigned char (*realloc)(unsigned char *array, unsigned int length); /**< a pointer to a function that reallocates array and returns a new buffer of
-                                                                        * length bytes or 0 for error.  The original array pointer is no longer used.
-                                                                        * This may be 0 (which causes an error if a reallocate is necessary). */
+  unsigned char * (*realloc)(unsigned char *array, unsigned int length); /**< a pointer to a function that reallocates array and returns a new pointer to a buffer of
+                                                                          * length bytes, or 0 for error.  On success, the contents of the old buffer are copied to the new one.
+                                                                          * On success, the original array pointer will no longer be used.
+                                                                          * This function pointer may be 0 (which causes an error if a reallocate is necessary). */
 };
 
 /**
@@ -29,13 +30,21 @@
  * @param reallocFunction see ndn_DynamicUCharArray_ensureLength.  This may be 0.
  */
 static inline void ndn_DynamicUCharArray_init
-  (struct ndn_DynamicUCharArray *self, unsigned char *array, unsigned int length, unsigned char (*reallocFunction)(unsigned char *, unsigned int)) 
+  (struct ndn_DynamicUCharArray *self, unsigned char *array, unsigned int length, unsigned char * (*reallocFunction)(unsigned char *, unsigned int)) 
 {
   self->array = array;
   self->length = length;
   self->realloc = reallocFunction;
 }
 
+/**
+ * Do the work of ndn_DynamicUCharArray_ensureLength if realloc is necessary.
+ * If the self->realloc function pointer is null, then return an error.
+ * If not null, call self->realloc to reallocate self->array, and update self->length (which may be greater than length).
+ * @param self pointer to the ndn_DynamicUCharArray struct
+ * @param length the needed minimum size for self->length
+ * @return 0 for success, else an error string if can't reallocate the array
+ */
 char *ndn_DynamicUCharArray_reallocArray(struct ndn_DynamicUCharArray *self, unsigned int length);
 
 /**
