diff --git a/scheme/resource.rs b/scheme/resource.rs
index 06598a8443c69efea664ea4fdaf759429dc35cd6..a72eebdf9a8708747e78237092bb11765d12223a 100644
--- a/scheme/resource.rs
+++ b/scheme/resource.rs
@@ -30,8 +30,12 @@ impl FileResource {
 
     pub fn write(&mut self, buf: &[u8]) -> Result<usize> {
         let mut i = 0;
-        while i < buf.len() && self.seek < self.data.len() {
-            self.data[self.seek] = buf[i];
+        while i < buf.len() {
+            if self.seek < self.data.len() {
+                self.data[self.seek] = buf[i];
+            } else {
+                self.data.push(buf[i]);
+            }
             i += 1;
             self.seek += 1;
         }