- *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]);
- *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]);
- *ret3 = safe_strndup (g, &str[vec[6]], vec[7]-vec[6]);
+ *ret1 = NULL;
+ *ret2 = NULL;
+ *ret3 = NULL;
+
+ if (r > 1) *ret1 = safe_strndup (g, &str[vec[2]], vec[3]-vec[2]);
+ if (r > 2) *ret2 = safe_strndup (g, &str[vec[4]], vec[5]-vec[4]);
+ if (r > 3) *ret3 = safe_strndup (g, &str[vec[6]], vec[7]-vec[6]);