@@ -2,14 +2,14 @@ import 'dart:math';
22import 'dart:typed_data' ;
33
44import 'package:path/path.dart' as p;
5- import 'dynamic_buffer .dart' ;
5+ import 'package:typed_data/typed_buffers .dart' ;
66
77import '../../constants.dart' ;
88import '../../vfs.dart' ;
99import 'utils.dart' ;
1010
1111final class InMemoryFileSystem extends BaseVirtualFileSystem {
12- final Map <String , DynamicBuffer ?> fileData = {};
12+ final Map <String , Uint8Buffer ?> fileData = {};
1313
1414 InMemoryFileSystem ({super .name = 'dart-memory' , super .random});
1515
@@ -35,7 +35,7 @@ final class InMemoryFileSystem extends BaseVirtualFileSystem {
3535 final create = flags & SqlFlag .SQLITE_OPEN_CREATE ;
3636
3737 if (create != 0 ) {
38- fileData[pathStr] = DynamicBuffer ();
38+ fileData[pathStr] = Uint8Buffer ();
3939 } else {
4040 throw VfsException (SqlError .SQLITE_CANTOPEN );
4141 }
@@ -70,7 +70,8 @@ class _InMemoryFile extends BaseVfsFile {
7070 if (file == null || file.length <= offset) return 0 ;
7171
7272 final available = min (buffer.length, file.length - offset);
73- buffer.setRange (0 , available, file.toUint8List (), offset);
73+ final list = file.buffer.asUint8List (0 , file.length);
74+ buffer.setRange (0 , available, list, offset);
7475 return available;
7576 }
7677
@@ -104,10 +105,10 @@ class _InMemoryFile extends BaseVfsFile {
104105 final file = vfs.fileData[path];
105106
106107 if (file == null ) {
107- vfs.fileData[path] = DynamicBuffer ();
108- vfs.fileData[path]! .truncate ( size) ;
108+ vfs.fileData[path] = Uint8Buffer ();
109+ vfs.fileData[path]! .length = size;
109110 } else {
110- file.truncate ( size) ;
111+ file.length = size;
111112 }
112113 }
113114
@@ -121,9 +122,14 @@ class _InMemoryFile extends BaseVfsFile {
121122 var file = vfs.fileData[path];
122123
123124 if (file == null ) {
124- file = DynamicBuffer ();
125+ file = Uint8Buffer ();
125126 vfs.fileData[path] = file;
126127 }
127- file.write (buffer, fileOffset);
128+
129+ var endIndex = fileOffset + buffer.length;
130+ if (endIndex > file.length) {
131+ file.length = endIndex;
132+ }
133+ file.setRange (fileOffset, endIndex, buffer);
128134 }
129135}
0 commit comments