@@ -179,7 +179,7 @@ type CFBFiles = {[n:string]:CFBEntry};
179
179
/* [MS-CFB] v20130118 */
180
180
var CFB = ( function _CFB ( ) {
181
181
var exports /*:CFBModule*/ = /*::(*/ { } /*:: :any)*/ ;
182
- exports . version = '0.13.0 ' ;
182
+ exports . version = '0.13.1 ' ;
183
183
/* [MS-CFB] 2.6.4 */
184
184
function namecmp ( l /*:string*/ , r /*:string*/ ) /*:number*/ {
185
185
var L = l . split ( "/" ) , R = r . split ( "/" ) ;
@@ -552,7 +552,7 @@ function rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {
552
552
}
553
553
if ( ! gc && ! f ) return ;
554
554
555
- var now = new Date ( ) , j = 0 ;
555
+ var now = new Date ( 1987 , 1 , 19 ) , j = 0 ;
556
556
var data /*:Array<[string, CFBEntry]>*/ = [ ] ;
557
557
for ( i = 0 ; i < cfb . FullPaths . length ; ++ i ) {
558
558
if ( cfb . FileIndex [ i ] . type === 0 ) continue ;
@@ -730,7 +730,7 @@ function _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {
730
730
for ( ; j & 0x3F ; ++ j ) o . write_shift ( 1 , 0 ) ;
731
731
}
732
732
}
733
-
733
+ while ( o . l < o . length ) o . write_shift ( 1 , 0 ) ;
734
734
return o ;
735
735
}
736
736
/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */
@@ -809,9 +809,15 @@ function cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, o
809
809
init_cfb ( cfb ) ;
810
810
var file = CFB . find ( cfb , name ) ;
811
811
if ( ! file ) {
812
+ var fpath = cfb . FullPaths [ 0 ] ;
813
+ if ( name . slice ( 0 , fpath . length ) == fpath ) fpath = name ;
814
+ else {
815
+ if ( fpath . slice ( - 1 ) != "/" ) fpath += "/" ;
816
+ fpath = ( fpath + name ) . replace ( "//" , "/" ) ;
817
+ }
812
818
file = ( { name : filename ( name ) } /*:any*/ ) ;
813
819
cfb . FileIndex . push ( file ) ;
814
- cfb . FullPaths . push ( name ) ;
820
+ cfb . FullPaths . push ( fpath ) ;
815
821
CFB . utils . cfb_gc ( cfb ) ;
816
822
}
817
823
/*:: if(!file) throw new Error("unreachable"); */
0 commit comments