version 0.2.11
[fms.git] / src / db / sqlite3statement.cpp
index 81df27a..fea3d76 100644 (file)
@@ -229,8 +229,24 @@ const bool Statement::ResultBlob(const int column, void *data, int &length)
        {\r
                //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
                //PThread::Guard g(DB::Instance()->m_mutex);\r
-               data=(void *)sqlite3_column_blob(m_statement,column);\r
-               length=sqlite3_column_bytes(m_statement,column);\r
+               int bloblength=sqlite3_column_bytes(m_statement,column);\r
+               if(bloblength>length)\r
+               {\r
+                       bloblength=length;\r
+               }\r
+               if(bloblength<length)\r
+               {\r
+                       length=bloblength;\r
+               }\r
+               const void *blobptr=sqlite3_column_blob(m_statement,column);\r
+               if(blobptr)\r
+               {\r
+                       std::copy((unsigned char *)blobptr,(unsigned char *)blobptr+bloblength,(unsigned char *)data);\r
+               }\r
+               else\r
+               {\r
+                       length=0;\r
+               }\r
                return true;\r
        }\r
        else\r