summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/piece-table.c7
-rw-r--r--src/piece-table.h2
2 files changed, 5 insertions, 4 deletions
diff --git a/src/piece-table.c b/src/piece-table.c
index ba88103..c7f9381 100644
--- a/src/piece-table.c
+++ b/src/piece-table.c
@@ -186,8 +186,8 @@ piece_table_piece_split(piece_table *pt, piece *p, size_t pos)
/* Returns the first piece */
piece *second;
assert(pos < p->length);
- assert(p->start != 0); /* Not a sentinel piece */
- assert(p->length != 0); /* Not an empty piece (they should not exist) */
+ assert(p->buffer != NULL); /* Not a sentinel piece */
+ assert(p->length != 0); /* Not an empty piece (they should not exist) */
if ( pos == 0 )
{
return p->prev;
@@ -196,6 +196,7 @@ piece_table_piece_split(piece_table *pt, piece *p, size_t pos)
second->length = p->length - pos;
p->length = pos;
second->next = p->next;
+ second->next->prev = second;
p->next = second;
second->prev = p;
second->start = p->start + pos;
@@ -385,7 +386,7 @@ piece_table_create (char *orig)
pt->sentinel->prev = original;
pt->empty = NULL;
- pt->cached = NULL;
+ pt->cached = original;
pt->cached_offset = 0;
return pt;
}
diff --git a/src/piece-table.h b/src/piece-table.h
index 59972ee..0e95550 100644
--- a/src/piece-table.h
+++ b/src/piece-table.h
@@ -27,7 +27,7 @@ void piece_table_destroy (piece_table * piece_table);
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 start, size_t end);
+void piece_table_delete (piece_table *pt, size_t pos, size_t len);
void piece_table_print (piece_table *pt);
char *piece_table_to_string (piece_table *pt);