projects
/
projects
/
chimara
/
chimara.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix some memory leakage
[projects/chimara/chimara.git]
/
libchimara
/
strio.c
diff --git
a/libchimara/strio.c
b/libchimara/strio.c
index 039e189a5d8676b6c34506ebeb63a02add52ab9e..41146f24fd6613bb159cc7d653093bcbaf5f5835 100644
(file)
--- a/
libchimara/strio.c
+++ b/
libchimara/strio.c
@@
-310,6
+310,10
@@
write_buffer_to_stream(strid_t str, gchar *buf, glui32 len)
str->mark += copycount;
}
str->mark += copycount;
}
+ /* Move the EOF marker if we wrote past it */
+ if(str->mark > str->endmark)
+ str->endmark = str->mark;
+
str->write_count += len;
break;
str->write_count += len;
break;
@@
-402,6
+406,10
@@
write_buffer_to_stream_uni(strid_t str, glui32 *buf, glui32 len)
str->mark += copycount;
}
str->mark += copycount;
}
+ /* Move the EOF marker if we wrote past it */
+ if(str->mark > str->endmark)
+ str->endmark = str->mark;
+
str->write_count += len;
break;
str->write_count += len;
break;
@@
-628,7
+636,7
@@
is_unicode_newline(glsi32 ch, strid_t str, gboolean utf8)
glsi32 ch2 = utf8? read_utf8_char_from_file(str) :
read_ucs4be_char_from_file(str);
if(ch2 != 0x0A) {
glsi32 ch2 = utf8? read_utf8_char_from_file(str) :
read_ucs4be_char_from_file(str);
if(ch2 != 0x0A) {
- if(fseek(str->file_pointer, utf8? -1 : -4, SEEK_CUR) == -1)
;
+ if(fseek(str->file_pointer, utf8? -1 : -4, SEEK_CUR) == -1)
WARNING_S("Seek failed on stream", g_strerror(errno) );
str->lastop = 0; /* can read or write after a seek */
}
WARNING_S("Seek failed on stream", g_strerror(errno) );
str->lastop = 0; /* can read or write after a seek */
}
@@
-1343,7
+1351,7
@@
glk_stream_set_position(strid_t str, glsi32 pos, glui32 seekmode)
{
case seekmode_Start: str->mark = pos; break;
case seekmode_Current: str->mark += pos; break;
{
case seekmode_Start: str->mark = pos; break;
case seekmode_Current: str->mark += pos; break;
- case seekmode_End: str->mark = str->
buflen
+ pos; break;
+ case seekmode_End: str->mark = str->
endmark
+ pos; break;
default:
g_return_if_reached();
return;
default:
g_return_if_reached();
return;