{
        char buf[TEST_HEXDUMP_BUF_SIZE];
        const char *t = test_data_1_le[0];
+       size_t len = 1;
+       int rs = 16, gs = 1;
+       int ae, he, e, r;
        bool a;
-       int e, r;
 
        memset(buf, FILL_CHAR, sizeof(buf));
 
-       r = hex_dump_to_buffer(data_b, 1, 16, 1, buf, buflen, ascii);
+       r = hex_dump_to_buffer(data_b, len, rs, gs, buf, buflen, ascii);
+
+       /*
+        * Caller must provide the data length multiple of groupsize. The
+        * calculations below are made with that assumption in mind.
+        */
+       ae = rs * 2 /* hex */ + rs / gs /* spaces */ + 1 /* space */ + len /* ascii */;
+       he = (gs * 2 /* hex */ + 1 /* space */) * len / gs - 1 /* no trailing space */;
 
        if (ascii)
-               e = 50;
+               e = ae;
        else
-               e = 2;
+               e = he;
        buf[e + 2] = '\0';
 
        if (!buflen) {