fix memory allocation problem for strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -40,9 +40,9 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DBDEBUG_CONSOLE
|
//#ifdef DBDEBUG_CONSOLE
|
||||||
#include <iostream.h>
|
#include <iostream.h>
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
#ifdef __BORLANDC__
|
#ifdef __BORLANDC__
|
||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
@@ -258,7 +258,7 @@ wxTable::~wxTable()
|
|||||||
TablesInUse.DeleteContents(TRUE);
|
TablesInUse.DeleteContents(TRUE);
|
||||||
bool found = FALSE;
|
bool found = FALSE;
|
||||||
|
|
||||||
wxNode *pNode;
|
wxNode *pNode;
|
||||||
pNode = TablesInUse.First();
|
pNode = TablesInUse.First();
|
||||||
while (pNode && !found)
|
while (pNode && !found)
|
||||||
{
|
{
|
||||||
@@ -280,6 +280,8 @@ wxTable::~wxTable()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Decrement the wxDB table count
|
// Decrement the wxDB table count
|
||||||
if (pDb)
|
if (pDb)
|
||||||
pDb->nTables--;
|
pDb->nTables--;
|
||||||
@@ -294,12 +296,14 @@ wxTable::~wxTable()
|
|||||||
if (hstmtInsert)
|
if (hstmtInsert)
|
||||||
if (SQLFreeStmt(hstmtInsert, SQL_DROP) != SQL_SUCCESS)
|
if (SQLFreeStmt(hstmtInsert, SQL_DROP) != SQL_SUCCESS)
|
||||||
pDb->DispAllErrors(henv, hdbc);
|
pDb->DispAllErrors(henv, hdbc);
|
||||||
|
|
||||||
if (hstmtDelete)
|
if (hstmtDelete)
|
||||||
if (SQLFreeStmt(hstmtDelete, SQL_DROP) != SQL_SUCCESS)
|
if (SQLFreeStmt(hstmtDelete, SQL_DROP) != SQL_SUCCESS)
|
||||||
pDb->DispAllErrors(henv, hdbc);
|
|
||||||
if (hstmtUpdate)
|
if (hstmtUpdate)
|
||||||
if (SQLFreeStmt(hstmtUpdate, SQL_DROP) != SQL_SUCCESS)
|
if (SQLFreeStmt(hstmtUpdate, SQL_DROP) != SQL_SUCCESS)
|
||||||
pDb->DispAllErrors(henv, hdbc);
|
pDb->DispAllErrors(henv, hdbc);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (hstmtInternal)
|
if (hstmtInternal)
|
||||||
if (SQLFreeStmt(hstmtInternal, SQL_DROP) != SQL_SUCCESS)
|
if (SQLFreeStmt(hstmtInternal, SQL_DROP) != SQL_SUCCESS)
|
||||||
@@ -308,9 +312,11 @@ wxTable::~wxTable()
|
|||||||
// Delete dynamically allocated cursors
|
// Delete dynamically allocated cursors
|
||||||
if (hstmtDefault)
|
if (hstmtDefault)
|
||||||
DeleteCursor(hstmtDefault);
|
DeleteCursor(hstmtDefault);
|
||||||
|
|
||||||
if (hstmtCount)
|
if (hstmtCount)
|
||||||
DeleteCursor(hstmtCount);
|
DeleteCursor(hstmtCount);
|
||||||
|
|
||||||
|
|
||||||
} // wxTable::~wxTable()
|
} // wxTable::~wxTable()
|
||||||
|
|
||||||
|
|
||||||
@@ -1671,6 +1677,7 @@ void wxTable::ClearMemberVars(void)
|
|||||||
pDt->second = 0;
|
pDt->second = 0;
|
||||||
pDt->fraction = 0;
|
pDt->fraction = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1775,10 +1782,20 @@ wxColDataPtr* wxTable::SetColDefs (wxColInf *pColInfs, ULONG numCols)
|
|||||||
{
|
{
|
||||||
case DB_DATA_TYPE_VARCHAR:
|
case DB_DATA_TYPE_VARCHAR:
|
||||||
{
|
{
|
||||||
pColDataPtrs[index].PtrDataObj = new char[pColInfs[index].bufferLength+1];
|
|
||||||
pColDataPtrs[index].SzDataObj = pColInfs[index].bufferLength;
|
// Be sure to allocate enough memory
|
||||||
pColDataPtrs[index].SqlCtype = SQL_C_CHAR;
|
if (pColInfs[index].bufferLength >= pColInfs[index].columnSize)
|
||||||
break;
|
{
|
||||||
|
pColDataPtrs[index].PtrDataObj = new char[pColInfs[index].bufferLength+1];
|
||||||
|
pColDataPtrs[index].SzDataObj = pColInfs[index].bufferLength;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pColDataPtrs[index].PtrDataObj = new char[pColInfs[index].columnSize+1];
|
||||||
|
pColDataPtrs[index].SzDataObj = pColInfs[index].columnSize;
|
||||||
|
}
|
||||||
|
pColDataPtrs[index].SqlCtype = SQL_C_CHAR;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case DB_DATA_TYPE_INTEGER:
|
case DB_DATA_TYPE_INTEGER:
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user