- int i, ci, last, nr;
- size_t len;
-
- len = strlen(run_str);
- if (!len)
- return;
-
- last = 0;
- nr = 0;
- ci = 0;
- for (i = 0; i < len; i++) {
- if (!last) {
-new:
- run_str_condensed[ci] = run_str[i];
- last = run_str[i];
- nr = 1;
- ci++;
- } else if (last == run_str[i]) {
- nr++;
- } else {
- ci += sprintf(&run_str_condensed[ci], "(%u),", nr);
- goto new;
+ if (*run_str) {
+ while (*run_str) {
+ int nr = 1;
+
+ *run_str_condensed++ = *run_str++;
+ while (*(run_str - 1) == *run_str) {
+ run_str++;
+ nr++;
+ }
+ run_str_condensed += sprintf(run_str_condensed, "(%u),", nr);