diff options
-rw-r--r-- | src/piece-table.c | 6 | ||||
-rw-r--r-- | src/piece-table.h | 2 | ||||
-rw-r--r-- | tests/piece-table-delete.c | 8 | ||||
-rw-r--r-- | tests/piece-table-insert.c | 6 |
4 files changed, 12 insertions, 10 deletions
diff --git a/src/piece-table.c b/src/piece-table.c index b29f3be..6c9e850 100644 --- a/src/piece-table.c +++ b/src/piece-table.c @@ -416,10 +416,12 @@ piece_table_index (piece_table *pt, size_t pos) } void -piece_table_to_string (piece_table *pt, char *buf) +piece_table_to_string (piece_table *pt, char *buf, size_t size) { size_t i; - for (i = 0; i < pt->length; i++) + if (pt->length < size) + size = pt->length; + for (i = 0; i < size; i++) { buf[i] = piece_table_index (pt, i); } diff --git a/src/piece-table.h b/src/piece-table.h index e90d2fa..ee39958 100644 --- a/src/piece-table.h +++ b/src/piece-table.h @@ -29,7 +29,7 @@ char piece_table_index (piece_table *pt, size_t pos); void piece_table_insert (piece_table *pt, size_t pos, char *in, size_t len); void piece_table_delete (piece_table *pt, size_t pos, size_t len); -void piece_table_to_string (piece_table *pt, char *buf); +void piece_table_to_string (piece_table *pt, char *buf, size_t size); size_t piece_table_length (piece_table *pt); #endif diff --git a/tests/piece-table-delete.c b/tests/piece-table-delete.c index dc54ccc..4a99b79 100644 --- a/tests/piece-table-delete.c +++ b/tests/piece-table-delete.c @@ -9,21 +9,21 @@ main() char tmp[100]; piece_table_delete(pt, 0, 10); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "")) return 1; piece_table_destroy(pt); pt = piece_table_create("0123456789"); piece_table_delete(pt, 0, 1); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "123456789")) return 2; piece_table_destroy(pt); pt = piece_table_create("0123456789"); piece_table_delete(pt, 9, 1); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "012345678")) return 3; piece_table_destroy(pt); @@ -31,7 +31,7 @@ main() pt = piece_table_create("0123456789"); piece_table_delete(pt, 7, 1); piece_table_delete(pt, 0, 1); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "12345689")) return 4; piece_table_destroy(pt); diff --git a/tests/piece-table-insert.c b/tests/piece-table-insert.c index bcf6dc5..54ff842 100644 --- a/tests/piece-table-insert.c +++ b/tests/piece-table-insert.c @@ -9,17 +9,17 @@ main() char tmp[100]; piece_table_insert(pt, 10, "abcdefgh", 8); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "0123456789abcdefgh")) return 1; piece_table_insert(pt, 18, "abcdefgh", 8); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "0123456789abcdefghabcdefgh")) return 2; piece_table_insert(pt, 4, "abcdefgh", 8); - piece_table_to_string(pt, tmp); + piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "0123abcdefgh456789abcdefghabcdefgh")) return 3; |