diff --git a/internal/mmkv/mmkv.go b/internal/mmkv/mmkv.go index 368bb11..5ab040f 100644 --- a/internal/mmkv/mmkv.go +++ b/internal/mmkv/mmkv.go @@ -2,6 +2,7 @@ package mmkv import ( "fmt" + "io" "os" "git.um-react.app/um/cli/algo/common" @@ -21,6 +22,7 @@ func LoadFromPath(path string, key string, logger *zap.Logger) (result common.QM } defer mr.Close() + var crc io.Reader cr, err := os.Open(mmkv_crc) if err != nil { // crc is optional @@ -28,14 +30,22 @@ func LoadFromPath(path string, key string, logger *zap.Logger) (result common.QM key = "" } else { defer cr.Close() + crc = cr } + stat, err := os.Stat(path) + if err != nil { + logger.Error("LoadMMKV: Could not stat mmkv file", zap.Error(err)) + return nil, fmt.Errorf("LoadMMKV: stat error: %w", err) + } + mmkv_size := stat.Size() + var password []byte = nil if key != "" { password = make([]byte, 16) copy(password, []byte(key)) } - mmkv, err := go_mmkv.NewMMKVReader(mr, password, cr) + mmkv, err := go_mmkv.NewMMKVReader(mr, mmkv_size, password, crc) if err != nil { logger.Error("LoadMMKV: failed to create reader", zap.Error(err)) return nil, fmt.Errorf("LoadMMKV: NewMMKVReader error: %w", err)