Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit a98fb99

Browse files
committed
[[ Bug 17150 ]] Ensure setcallbacksref is exported.
The MySQL driver now ensures the setcallbacksref function is exported allowing revDB to give it the necessary callbacks to load dynamic modules.
1 parent 2e8fe05 commit a98fb99

File tree

4 files changed

+7
-4
lines changed

4 files changed

+7
-4
lines changed

docs/notes/bugfix-17150.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Fix issue with MySQL loading SSL libraries on iOS

revdb/revdb.gyp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
'_setidcounterref',
109109
'_newdbconnectionref',
110110
'_releasedbconnectionref',
111+
'_setcallbacksref',
111112
],
112113
},
113114

revdb/src/dbmysqlapi.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ extern "C" LIBRARY_EXPORT void setidcounterref(unsigned int *tidcounter)
4141
DBObject::idcounter = tidcounter;
4242
}
4343

44+
extern "C" LIBRARY_EXPORT void setcallbacksref(DBcallbacks *callbacks);
45+
4446
////////////////////////////////////////////////////////////////////////////////
4547

4648
// The static function export table for iOS external linkage requirements.
@@ -67,6 +69,7 @@ extern "C" {
6769
{ "newdbconnectionref", (void *)newdbconnectionref },
6870
{ "releasedbconnectionref", (void *)releasedbconnectionref },
6971
{ "setidcounterref", (void *)setidcounterref },
72+
{ "setcallbacksref", (void *)setcallbacksref },
7073
{ 0, 0 }
7174
};
7275

revdb/src/iossupport.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ DATABASEREC *DoLoadDatabaseDriver(const char *p_path)
205205
t_result -> idcounterptr = (idcounterrefptr)dlsym(t_driver_handle, "setidcounterref");
206206
t_result -> newconnectionptr = (new_connectionrefptr)dlsym(t_driver_handle, "newdbconnectionref");
207207
t_result -> releaseconnectionptr = (release_connectionrefptr)dlsym(t_driver_handle, "releasedbconnectionref");
208-
// PM-2015-04-09: [[ Bug 14972 ]] Init setcallbacksptr to prevent a crash when LoadDatabaseDriver is called
209-
t_result -> setcallbacksptr = (set_callbacksrefptr)nil;
208+
t_result -> setcallbacksptr = (set_callbacksrefptr)dlsym(t_driver_handle, "setcallbacksref");
210209
free(t_filename);
211210
return t_result;
212211
#else
@@ -227,8 +226,7 @@ DATABASEREC *DoLoadDatabaseDriver(const char *p_path)
227226
t_result -> idcounterptr = (idcounterrefptr)resolve_symbol(t_driver_handle, "setidcounterref");
228227
t_result -> newconnectionptr = (new_connectionrefptr)resolve_symbol(t_driver_handle, "newdbconnectionref");
229228
t_result -> releaseconnectionptr = (release_connectionrefptr)resolve_symbol(t_driver_handle, "releasedbconnectionref");
230-
// PM-2015-04-09: [[ Bug 14972 ]] Init setcallbacksptr to prevent a crash when LoadDatabaseDriver is called
231-
t_result -> setcallbacksptr = (set_callbacksrefptr)nil;
229+
t_result -> setcallbacksptr = (set_callbacksrefptr)resolve_symbol(t_driver_handle, "setcallbacksref");
232230
free(t_filename);
233231
return t_result;
234232
#endif

0 commit comments

Comments
 (0)