Date: 08/25/98
- Next message: shane: "[PHP-DEV] CVS update: php31/main"
- Previous message: mlemos <email protected>: "[PHP-DEV] Bug #695: mysql_error can't fetch the error afte the database connection is closed"
- Next in thread: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tuesday August 25, 1998 @ 23:14
Author: shane
Update of /repository/php31/ext/odbc
In directory asf:/u2/tmp/cvs-serv29256/ext/odbc
Modified Files:
unified_odbc.c
Log Message:
overwrite odbc. it works again.
Index: php31/ext/odbc/unified_odbc.c
diff -c php31/ext/odbc/unified_odbc.c:2.2 php31/ext/odbc/unified_odbc.c:2.3
*** php31/ext/odbc/unified_odbc.c:2.2 Tue Aug 11 14:22:32 1998
--- php31/ext/odbc/unified_odbc.c Tue Aug 25 23:14:19 1998
***************
*** 34,48 ****
#ifdef THREAD_SAFE
#include "tls.h"
#endif
! #ifndef WIN32
#include "config.h"
#include "build-defs.h"
#endif
#include <fcntl.h>
- #ifdef COMPILE_DL
- #include "../phpdl.h"
- #endif
#include "php.h"
#include "internal_functions.h"
#include "ext/standard/php3_string.h"
--- 34,45 ----
#ifdef THREAD_SAFE
#include "tls.h"
#endif
! #ifndef MSVC5
#include "config.h"
#include "build-defs.h"
#endif
#include <fcntl.h>
#include "php.h"
#include "internal_functions.h"
#include "ext/standard/php3_string.h"
***************
*** 54,61 ****
#ifdef THREAD_SAFE
! MUTEX_T UODBC_MUTEX;
! TLS_T UODBC_TLS;
static int numthreads=0;
typedef struct UODBC_GLOBAL_STRUCT {
--- 51,58 ----
#ifdef THREAD_SAFE
! void *UODBC_MUTEX;
! DWORD UODBC_TLS;
static int numthreads=0;
typedef struct UODBC_GLOBAL_STRUCT {
***************
*** 65,72 ****
#define UODBC_GLOBAL(a) UODBC_GLOBALS->a
#define UODBC_TLS_VARS \
! UODBC_GLOBAL_STRUCT *UODBC_GLOBALS;\
! PHP3_TLS_GET(UODBC_TLS,UODBC_GLOBALS);
#else
UODBC_MODULE PHP3_UODBC_MODULE;
--- 62,68 ----
#define UODBC_GLOBAL(a) UODBC_GLOBALS->a
#define UODBC_TLS_VARS \
! UODBC_GLOBAL_STRUCT *UODBC_GLOBALS = TlsGetValue(UODBC_TLS);
#else
UODBC_MODULE PHP3_UODBC_MODULE;
***************
*** 122,131 ****
};
! #ifdef COMPILE_DL
! DLEXPORT php3_module_entry *get_module() { return &UODBC_MODULE_ENTRY; };
! #if (WIN32|WINNT)
BOOL WINAPI DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
--- 118,129 ----
};
! #if COMPILE_DL
! php3_module_entry *get_module() { return &UODBC_MODULE_ENTRY; };
! #if (WIN32|WINNT) && defined(THREAD_SAFE)
! /*NOTE: You should have an odbc.def file where you
! export DllMain*/
BOOL WINAPI DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
***************
*** 210,230 ****
int PHP3_MINIT_UODBC(INIT_FUNC_ARGS)
{
#ifdef THREAD_SAFE
UODBC_GLOBAL_STRUCT *UODBC_GLOBALS;
! PHP3_MUTEX_ALLOC(UODBC_MUTEX);
! PHP3_MUTEX_LOCK(UODBC_MUTEX);
numthreads++;
if (numthreads==1){
! if (!PHP3_TLS_PROC_STARTUP(UODBC_TLS)){
! PHP3_MUTEX_UNLOCK(UODBC_MUTEX);
! PHP3_MUTEX_FREE(UODBC_MUTEX);
! return 0;
! }
! }
! PHP3_MUTEX_UNLOCK(UODBC_MUTEX);
! if(!PHP3_TLS_THREAD_INIT(UODBC_TLS,UODBC_GLOBALS,UODBC_GLOBAL_STRUCT))
return 0;
#endif
SQLAllocEnv(&UODBC_GLOBAL(PHP3_UODBC_MODULE).henv);
--- 208,237 ----
int PHP3_MINIT_UODBC(INIT_FUNC_ARGS)
{
+ #ifdef SQLANY_BUG
+ HDBC foobar;
+ RETCODE rc;
+ #endif
#ifdef THREAD_SAFE
UODBC_GLOBAL_STRUCT *UODBC_GLOBALS;
! #if !COMPILE_DL
! #if WIN32|WINNT
! CREATE_MUTEX(UODBC_MUTEX,"UODBC_TLS");
! #endif
! #endif
! #if !COMPILE_DL
! SET_MUTEX(UODBC_MUTEX);
numthreads++;
if (numthreads==1){
! if ((UODBC_TLS=TlsAlloc())==0xFFFFFFFF){
! FREE_MUTEX(UODBC_MUTEX);
return 0;
+ }}
+ FREE_MUTEX(UODBC_MUTEX);
+ #endif
+ UODBC_GLOBALS =
+ (UODBC_GLOBAL_STRUCT *) LocalAlloc(LPTR, sizeof(UODBC_GLOBAL_STRUCT));
+ TlsSetValue(UODBC_TLS, (void *) UODBC_GLOBALS);
#endif
SQLAllocEnv(&UODBC_GLOBAL(PHP3_UODBC_MODULE).henv);
***************
*** 259,264 ****
--- 266,289 ----
UODBC_GLOBAL(PHP3_UODBC_MODULE).le_pconn =
register_list_destructors(NULL, _CLOSE_UODBC_PCONNECTION);
+ #ifdef SQLANY_BUG
+ /* Make a dumb connection to avoid crash on SQLFreeEnv(),
+ * then release it immediately.
+ * This is required for SQL Anywhere 5.5.00 on QNX 4.24 at least.
+ * The SQLANY_BUG should be defined in CFLAGS.
+ */
+ if ( SQLAllocConnect(UODBC_GLOBAL(PHP3_UODBC_MODULE).henv, &foobar) != SQL_SUCCESS )
+ UODBC_SQL_ERROR(SQL_NULL_HDBC, SQL_NULL_HSTMT, "SQLAllocConnect");
+ else
+ {
+ rc = SQLConnect(foobar, UODBC_GLOBAL(PHP3_UODBC_MODULE).defDB, SQL_NTS, UODBC_GLOBAL(PHP3_UODBC_MODULE).defUser,
+ SQL_NTS, UODBC_GLOBAL(PHP3_UODBC_MODULE).defPW, SQL_NTS);
+ if(rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
+ SQLDisconnect( foobar );
+ SQLFreeConnect( foobar );
+ }
+ #endif
+
return SUCCESS;
}
***************
*** 270,293 ****
UODBC_GLOBAL(PHP3_UODBC_MODULE).defConn = -1;
UODBC_GLOBAL(PHP3_UODBC_MODULE).num_links =
UODBC_GLOBAL(PHP3_UODBC_MODULE).num_persistent;
! UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl = 0;
! UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode = 0;
return SUCCESS;
}
int PHP3_MSHUTDOWN_UODBC(void)
{
! UODBC_TLS_VARS;
SQLFreeEnv(UODBC_GLOBAL(PHP3_UODBC_MODULE).henv);
#ifdef THREAD_SAFE
! PHP3_TLS_THREAD_FREE(UODBC_GLOBALS);
! PHP3_MUTEX_LOCK(UODBC_MUTEX);
numthreads--;
if (!numthreads) {
! PHP3_TLS_PROC_SHUTDOWN(UODBC_TLS);
}
! PHP3_MUTEX_UNLOCK(UODBC_MUTEX);
! PHP3_MUTEX_FREE(UODBC_MUTEX);
#endif
return SUCCESS;
}
--- 295,332 ----
UODBC_GLOBAL(PHP3_UODBC_MODULE).defConn = -1;
UODBC_GLOBAL(PHP3_UODBC_MODULE).num_links =
UODBC_GLOBAL(PHP3_UODBC_MODULE).num_persistent;
! if (cfg_get_long(ODBC_INI_DEFAULTLRL, &UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl)
! == FAILURE){
! UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl = 4096;
! }
! if (cfg_get_long(ODBC_INI_DEFAULTBINMODE, &UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode) == FAILURE){
! UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode = 1;
! }
return SUCCESS;
}
int PHP3_MSHUTDOWN_UODBC(void)
{
! #ifdef THREAD_SAFE
! UODBC_GLOBAL_STRUCT *UODBC_GLOBALS;
! UODBC_GLOBALS = TlsGetValue(UODBC_TLS);
! #endif
SQLFreeEnv(UODBC_GLOBAL(PHP3_UODBC_MODULE).henv);
#ifdef THREAD_SAFE
! if (UODBC_GLOBALS != 0) {
! LocalFree((HLOCAL) UODBC_GLOBALS);
! }
! #if !COMPILE_DL
! SET_MUTEX(UODBC_MUTEX);
numthreads--;
if (!numthreads) {
! if (!TlsFree(UODBC_TLS)) {
! FREE_MUTEX(UODBC_MUTEX);
! return 0;
! }
}
! FREE_MUTEX(UODBC_MUTEX);
! #endif
#endif
return SUCCESS;
}
***************
*** 524,530 ****
case SQL_TIMESTAMP:
result->values[i].value = (char *)emalloc(27);
SQLBindCol(result->stmt, (UWORD)(i+1), SQL_C_CHAR, result->values[i].value,
! 27, &result->values[i].vallen);
break;
#endif /* HAVE_ADABAS */
default:
--- 563,569 ----
case SQL_TIMESTAMP:
result->values[i].value = (char *)emalloc(27);
SQLBindCol(result->stmt, (UWORD)(i+1), SQL_C_CHAR, result->values[i].value,
! 27, &result->values[i].vallen);
break;
#endif /* HAVE_ADABAS */
default:
***************
*** 1370,1376 ****
UWORD RowStatus[1];
#endif
#if !defined(COMPILE_DL) && defined(THREAD_SAFE)
! TLS_VARS;
#endif
numArgs = ARG_COUNT(ht);
--- 1409,1415 ----
UWORD RowStatus[1];
#endif
#if !defined(COMPILE_DL) && defined(THREAD_SAFE)
! TLS_VARS
#endif
numArgs = ARG_COUNT(ht);
-- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe <email protected> For help: php-dev-help <email protected>
- Next message: shane: "[PHP-DEV] CVS update: php31/main"
- Previous message: mlemos <email protected>: "[PHP-DEV] Bug #695: mysql_error can't fetch the error afte the database connection is closed"
- Next in thread: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Maybe reply: shane: "[PHP-DEV] CVS update: php31/ext/odbc"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

