Index: trunk/psLib/src/fileUtils/psDB.c
===================================================================
--- trunk/psLib/src/fileUtils/psDB.c	(revision 3560)
+++ trunk/psLib/src/fileUtils/psDB.c	(revision 3563)
@@ -12,6 +12,6 @@
  *  @author Joshua Hoblitt
  *
- *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-03-30 07:02:44 $
+ *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-03-30 21:12:21 $
  *
  *  Copyright 2005 Joshua Hoblitt, University of Hawaii
@@ -267,5 +267,7 @@
             data = psStringCopy("");
         } else {
-            data = psStringNCopy(row[0], dataSize);
+            data = psAlloc(dataSize+1);
+            memcpy(data, row[0], dataSize);
+            ((char*)data)[dataSize] = '\0';
         }
 
@@ -373,4 +375,5 @@
     psU64           fieldCount;         // number of fields in db result set
     psU64           *fieldLength;       // field sizes
+    psU64           len;                // field length
     psArray         *resultSet;         // return array
     int             i;                  // field index
@@ -431,23 +434,25 @@
             pType = psDBMySQLToPType(field[i].type, field[i].flags);
 
+            len = fieldLength[i];
+            if (len) {
+                data = psAlloc(len+1);
+                memcpy(data, row[i], len);
+                ((char*)data)[len] = '\0';
+            } else {
+                data = psDBGetPTypeNaN(pType);
+            }
+
             // copy field data and convert NULLs to the appropriate NaN value
             if ((pType == PS_TYPE_PTR) || (pType == PS_META_STR)) {
-                data = fieldLength[i] ? psStringNCopy(row[i], fieldLength[i])
-                       : psDBGetPTypeNaN(pType);
                 psMetadataAddStr(md, 0, field[i].name, "", data);
+            } else if (pType == PS_META_S32) {
+                psMetadataAddS32(md, 0, field[i].name, "", atoll(data));
+            } else if (pType == PS_META_F32) {
+                psMetadataAddF32(md, 0, field[i].name, "", atof(data));
+            } else if (pType == PS_META_F64) {
+                psMetadataAddF64(md, 0, field[i].name, "", atof(data));
             } else {
-                if (fieldLength[i]) {
-                    data = psAlloc(fieldLength[i]);
-                    memcpy(data, row[i], fieldLength[i]);
-                } else {
-                    data = psDBGetPTypeNaN(pType);
-                }
-                if (pType == PS_META_S32) {
-                    psMetadataAddS32(md, 0, field[i].name, "", atoll(data));
-                } else if (pType == PS_META_F32) {
-                    psMetadataAddF32(md, 0, field[i].name, "", atof(data));
-                } else if (pType == PS_META_F64) {
-                    psMetadataAddF64(md, 0, field[i].name, "", atof(data));
-                }
+                // XXX: assume binary string ...
+                psMetadataAddStr(md, 0, field[i].name, "", data);
             }
 
