diff --git a/include/isam.cpp b/include/isam.cpp index f96581e2d..dd5af3336 100755 --- a/include/isam.cpp +++ b/include/isam.cpp @@ -1774,7 +1774,7 @@ void TExternisamfile::init(const char* name, bool exclusive, bool index) int TExternisamfile::open(bool exclusive, bool index) { _isam_handle = prefix().open_isamfile(_logicnum, _name, exclusive, index); - if (_isam_handle > 0) + if (_isam_handle > 0) { if (prefix().get_recdes(_logicnum).NKeys <= 0) fatal_box("Il file %d (%s) e' senza indici", num(), (const char*)filename()); @@ -1807,7 +1807,10 @@ int TExternisamfile::close() } int TExternisamfile::zap() -{ +{ + RecDes* rd = new RecDes; + memcpy(rd, curr().rec_des(), sizeof(RecDes)); + int err = prefix().close_isamfile(_isam_handle); if (err == NOERR) { @@ -1815,10 +1818,12 @@ int TExternisamfile::zap() if (err == NOERR) { TRecnotype peod; - err = DB_packindex(TRUE, _name, curr().rec_des(), &peod, FALSE); + err = DB_packindex(TRUE, _name, rd, &peod, FALSE); } _isam_handle = prefix().open_isamfile(_logicnum, _name); } + + delete rd; return err; }