Index: trunk/Ohana/src/opihi/cmd.data/subset.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/subset.c	(revision 42311)
+++ trunk/Ohana/src/opihi/cmd.data/subset.c	(revision 42389)
@@ -44,5 +44,5 @@
   ResetVector (ovec, ivec->type, tvec[0].Nelements);
 
-  // we have four cases: (ivec == flt or int) and (tvec == flt or int)
+  // we have size cases: (ivec == flt, int, str) and (tvec == flt or int)
   if ((ivec->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) {
     opihi_flt *vi = ivec[0].elements.Flt;
@@ -81,9 +81,12 @@
     }
   }
+  // XXX if ivec is an existing vector, this step will
+  // leak (existing elements need to be freed if they
+  // have been allocated).
   if ((ivec->type == OPIHI_STR) && (tvec->type == OPIHI_FLT)) {
     opihi_flt *vt = tvec[0].elements.Flt;
     for (Npts = i = 0; i < tvec[0].Nelements; i++, vt++) {
       if (!*vt) continue;
-      ovec[0].elements.Str[Npts] = strcreate (ivec[0].elements.Str[i]);
+      ovec[0].elements.Str[Npts] = strcreate(ivec[0].elements.Str[i]);
       Npts++;
     }
@@ -93,5 +96,5 @@
     for (Npts = i = 0; i < tvec[0].Nelements; i++, vt++) {
       if (!*vt) continue;
-      ovec[0].elements.Str[Npts] = strcreate (ivec[0].elements.Str[i]);
+      ovec[0].elements.Str[Npts] = strcreate(ivec[0].elements.Str[i]);
       Npts++;
     }
