diff options
author | NotZed <notzed@zedzone.helixcode.com> | 2000-02-10 11:54:22 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-02-10 11:54:22 +0800 |
commit | 3ef8dbd93ad44e08503f69d4929428362fc383ea (patch) | |
tree | 07a5a83c66613435ece6bb81055704a93bddc050 /camel | |
parent | 8c9cb1454e15437096c3a3fb891239bcc0f3e593 (diff) | |
download | gsoc2013-evolution-3ef8dbd93ad44e08503f69d4929428362fc383ea.tar.gz gsoc2013-evolution-3ef8dbd93ad44e08503f69d4929428362fc383ea.tar.zst gsoc2013-evolution-3ef8dbd93ad44e08503f69d4929428362fc383ea.zip |
Increment the copy source address to match the data read offset. (seek):
2000-02-09 NotZed <notzed@zedzone.helixcode.com>
* camel/camel-simple-data-wrapper-stream.c (read): Increment the
copy source address to match the data read offset.
(seek): Actually implement the seek.
svn path=/trunk/; revision=1722
Diffstat (limited to 'camel')
-rw-r--r-- | camel/camel-simple-data-wrapper-stream.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/camel/camel-simple-data-wrapper-stream.c b/camel/camel-simple-data-wrapper-stream.c index 7316997c03..5e89734729 100644 --- a/camel/camel-simple-data-wrapper-stream.c +++ b/camel/camel-simple-data-wrapper-stream.c @@ -50,7 +50,7 @@ read (CamelStream *stream, len = MIN (n, array->len - wrapper_stream->current_position); if (len > 0) { - memcpy (buffer, array->data, len); + memcpy (buffer, wrapper_stream->current_position + array->data, len); wrapper_stream->current_position += len; return len; } else { @@ -161,13 +161,18 @@ seek (CamelSeekableStream *stream, new_position = wrapper_stream->current_position + offset; break; case CAMEL_STREAM_END: - new_position = wrapper_stream->wrapper->byte_array->len; + new_position = wrapper_stream->wrapper->byte_array->len - offset; break; default: g_warning ("Unknown CamelStreamSeekPolicy %d.", policy); return -1; } + if (new_position<0) + new_position = 0; + else if (new_position>=wrapper_stream->wrapper->byte_array->len) + new_position = wrapper_stream->wrapper->byte_array->len-1; + wrapper_stream->current_position = new_position; return new_position; } |