Skip to content

Commit 91d26a9

Browse files
committed
Added more explicit string_dup functions
1 parent b3ba940 commit 91d26a9

File tree

6 files changed

+29
-17
lines changed

6 files changed

+29
-17
lines changed

src/cloudsync.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ cloudsync_table_context *table_create (cloudsync_context *data, const char *name
601601

602602
table->context = data;
603603
table->algo = algo;
604-
table->name = cloudsync_string_dup(name, true);
604+
table->name = cloudsync_string_dup_lowercase(name);
605605
if (!table->name) {
606606
cloudsync_memory_free(table);
607607
return NULL;
@@ -869,7 +869,7 @@ int table_add_to_context_cb (void *xdata, int ncols, char **values, char **names
869869
int cid = (int)strtol(values[i+1], NULL, 0);
870870

871871
table->col_id[index] = cid;
872-
table->col_name[index] = cloudsync_string_dup(name, true);
872+
table->col_name[index] = cloudsync_string_dup_lowercase(name);
873873
if (!table->col_name[index]) return 1;
874874

875875
char *sql = table_build_mergeinsert_sql(db, table, name);

src/postgresql/database_postgresql.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ static int set_last_error(int errcode, const char *errmsg) {
614614
}
615615

616616
if (errmsg) {
617-
last_error_msg = pstrdup(errmsg);
617+
last_error_msg = cloudsync_string_dup(errmsg);
618618
}
619619

620620
return errcode;
@@ -1091,7 +1091,7 @@ int database_pk_names (db_t *db, const char *table_name, char ***names, int *cou
10911091
if (!isnull) {
10921092
text *txt = DatumGetTextP(datum);
10931093
char *name = text_to_cstring(txt);
1094-
pk_names[i] = cloudsync_string_dup(name, false);
1094+
pk_names[i] = cloudsync_string_dup(name);
10951095
} else {
10961096
pk_names[i] = NULL;
10971097
}
@@ -1366,7 +1366,7 @@ void *database_value_dup (dbvalue_t *value) {
13661366
copy->detoasted = true;
13671367
}
13681368
if (v->cstring) {
1369-
copy->cstring = pstrdup(v->cstring);
1369+
copy->cstring = cloudsync_string_dup(v->cstring);
13701370
copy->owns_cstring = true;
13711371
}
13721372
return (void*)copy;

src/sqlite/database_sqlite.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ int database_pk_rowid (db_t *db, const char *table_name, char ***names, int *cou
742742
if (rc == SQLITE_OK) {
743743
char **r = (char**)cloudsync_memory_alloc(sizeof(char*));
744744
if (!r) return SQLITE_NOMEM;
745-
r[0] = cloudsync_string_dup("rowid", false);
745+
r[0] = cloudsync_string_dup("rowid");
746746
*names = r;
747747
*count = 1;
748748
} else {
@@ -789,7 +789,7 @@ int database_pk_names (db_t *db, const char *table_name, char ***names, int *cou
789789
while ((rc = sqlite3_step(vm)) == SQLITE_ROW) {
790790
const char *txt = (const char*)sqlite3_column_text(vm, 0);
791791
if (!txt) {rc = SQLITE_ERROR; goto cleanup;}
792-
r[i] = cloudsync_string_dup(txt, false);
792+
r[i] = cloudsync_string_dup(txt);
793793
if (!r[i]) { rc = SQLITE_NOMEM; goto cleanup;}
794794
i++;
795795
}

src/utils.c

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ int cloudsync_uuid_v7_compare (uint8_t value1[UUID_LEN], uint8_t value2[UUID_LEN
127127

128128
// MARK: - General -
129129

130-
char *cloudsync_string_ndup (const char *str, size_t len, bool lowercase) {
130+
char *cloudsync_string_ndup_v2 (const char *str, size_t len, bool lowercase) {
131131
if (str == NULL) return NULL;
132132

133133
char *s = (char *)cloudsync_memory_alloc((uint64_t)(len + 1));
@@ -148,11 +148,20 @@ char *cloudsync_string_ndup (const char *str, size_t len, bool lowercase) {
148148
return s;
149149
}
150150

151-
char *cloudsync_string_dup (const char *str, bool lowercase) {
152-
if (str == NULL) return NULL;
153-
154-
size_t len = strlen(str);
155-
return cloudsync_string_ndup(str, len, lowercase);
151+
char *cloudsync_string_ndup (const char *str, size_t len) {
152+
return cloudsync_string_ndup_v2(str, len, false);
153+
}
154+
155+
char *cloudsync_string_ndup_lowercase (const char *str, size_t len) {
156+
return cloudsync_string_ndup_v2(str, len, true);
157+
}
158+
159+
char *cloudsync_string_dup (const char *str) {
160+
return cloudsync_string_ndup_v2(str, (str) ? strlen(str) : 0, false);
161+
}
162+
163+
char *cloudsync_string_dup_lowercase (const char *str) {
164+
return cloudsync_string_ndup_v2(str, (str) ? strlen(str) : 0, true);
156165
}
157166

158167
int cloudsync_blob_compare(const char *blob1, size_t size1, const char *blob2, size_t size2) {

src/utils.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,11 @@ char *cloudsync_uuid_v7_stringify (uint8_t uuid[UUID_LEN], char value[UUID_STR_M
136136
uint64_t fnv1a_hash(const char *data, size_t len);
137137

138138
char *cloudsync_string_replace_prefix(const char *input, char *prefix, char *replacement);
139-
char *cloudsync_string_ndup (const char *str, size_t len, bool lowercase);
140-
char *cloudsync_string_dup (const char *str, bool lowercase);
139+
char *cloudsync_string_dup (const char *str);
140+
char *cloudsync_string_dup_lowercase (const char *str);
141+
char *cloudsync_string_ndup (const char *str, size_t len);
142+
char *cloudsync_string_ndup_lowercase (const char *str, size_t len);
143+
141144
int cloudsync_blob_compare(const char *blob1, size_t size1, const char *blob2, size_t size2);
142145

143146
void cloudsync_rowid_decode (int64_t rowid, int64_t *db_version, int64_t *seq);

test/unit.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ DATABASE_RESULT dbutils_exec (sqlite3_context *context, sqlite3 *db, const char
178178
}
179179
} else {
180180
const char *value = database_column_text(pstmt, i);
181-
if (value) buffer = cloudsync_string_dup((const char *)value, false);
181+
if (value) buffer = cloudsync_string_dup((const char *)value);
182182
}
183183
results[i].value.stringValue = buffer;
184184
}
@@ -508,7 +508,7 @@ bool unittest_payload_apply_rls_callback(void **xdata, cloudsync_pk_decode_bind_
508508
(strlen(s->last_tbl) != (size_t)tbl_len) ||
509509
strncmp(s->last_tbl, tbl, (size_t)tbl_len) != 0) {
510510
if (s->last_tbl) cloudsync_memory_free(s->last_tbl);
511-
if (tbl && tbl_len > 0) s->last_tbl = cloudsync_string_ndup(tbl, tbl_len, false);
511+
if (tbl && tbl_len > 0) s->last_tbl = cloudsync_string_ndup(tbl, tbl_len);
512512
else s->last_tbl = NULL;
513513
}
514514

0 commit comments

Comments
 (0)