mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-09-18 18:22:07 +08:00
Clean up mdb_clone_handle
This commit is contained in:
@@ -268,17 +268,19 @@ typedef struct {
|
||||
unsigned int cur_pos;
|
||||
unsigned char pg_buf[MDB_PGSIZE];
|
||||
unsigned char alt_pg_buf[MDB_PGSIZE];
|
||||
MdbFormatConstants *fmt;
|
||||
char date_fmt[64];
|
||||
const char *boolean_false_value;
|
||||
const char *boolean_true_value;
|
||||
unsigned int num_catalog;
|
||||
|
||||
// Non-cloneable fields start here
|
||||
GPtrArray *catalog;
|
||||
MdbBackend *default_backend;
|
||||
char *backend_name;
|
||||
struct S_MdbTableDef *relationships_table;
|
||||
char *relationships_values[5];
|
||||
MdbFormatConstants *fmt;
|
||||
MdbStatistics *stats;
|
||||
char date_fmt[64];
|
||||
const char *boolean_false_value;
|
||||
const char *boolean_true_value;
|
||||
GHashTable *backends;
|
||||
#ifdef HAVE_ICONV
|
||||
iconv_t iconv_in;
|
||||
|
@@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stddef.h>
|
||||
#include "mdbtools.h"
|
||||
|
||||
/*
|
||||
@@ -323,18 +324,20 @@ MdbHandle *mdb_clone_handle(MdbHandle *mdb)
|
||||
unsigned int i;
|
||||
|
||||
newmdb = (MdbHandle *) g_memdup(mdb, sizeof(MdbHandle));
|
||||
newmdb->stats = NULL;
|
||||
|
||||
memset(newmdb + offsetof(MdbHandle, catalog), 0,
|
||||
sizeof(MdbHandle) - offsetof(MdbHandle, catalog));
|
||||
|
||||
newmdb->catalog = g_ptr_array_new();
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
data = g_memdup(entry,sizeof(MdbCatalogEntry));
|
||||
data->mdb = newmdb;
|
||||
data->props = NULL;
|
||||
g_ptr_array_add(newmdb->catalog, data);
|
||||
}
|
||||
|
||||
mdb_iconv_init(newmdb);
|
||||
newmdb->backends = NULL;
|
||||
newmdb->backend_name = NULL;
|
||||
newmdb->default_backend = NULL;
|
||||
mdb_set_default_backend(newmdb, mdb->backend_name);
|
||||
|
||||
if (mdb->f) {
|
||||
|
Reference in New Issue
Block a user