From 5b13c8ee81094ea928e76e1946c92a4d129efb4f Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Sat, 18 Jun 2022 18:25:47 +0200 Subject: [PATCH] Patch level : 12.0 1174 Files correlati : ba1.exe Commento: Migliorata protezione aggiornamento tracciati sulla base dei dati Team --- src/include/isam.cpp | 22 ++++++++++++---------- src/include/isam.h | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/include/isam.cpp b/src/include/isam.cpp index 548d509a8..2cac5e063 100755 --- a/src/include/isam.cpp +++ b/src/include/isam.cpp @@ -1981,24 +1981,26 @@ HIDDEN void translate_key(TToken_string& t)// Traduce l'espressione chiave di Co t.add(is_dup ? "X" : " "); } -int TSystemisamfile::recover(TDir & dir, TTrec & rec) +int TSystemisamfile::recover(TDir & dir, TTrec & rec, const TDir & refdir) { + TString name = dir.name(); + TString refname = refdir.name(); + + if (name.mid(1) != refname.mid(1)) + { + name = refdir.name(); + dir.set_name(name); + dir.put(num(), _nordir, _sysdirop); + } + int err = NOERR; TCodeb_handle fchk = DB_open(filename(), 1, 0); const int lenrec = rec.len(); + int lendir = dir.len(); if (fchk < 0) return -1; - TDir refdir; - - refdir.get(dir.num(), _nolock, _studir, _sysdirop); - if(dir.filename()!= refdir.filename()) - { - dir.set_name(refdir.filename()); - dir.put(num(), _nordir, _sysdirop); - } - if (lenrec != lendir) { lendir = lenrec; diff --git a/src/include/isam.h b/src/include/isam.h index bbcb0a27a..fc1a9f35e 100755 --- a/src/include/isam.h +++ b/src/include/isam.h @@ -708,7 +708,7 @@ public: // @cmember Calcola lo spazio che il file occuperebbe se venisse esteso a

long size(TRecnotype eox); // @cmember Recupera il tracciato record dal file dbf - int recover(TDir & dir, TTrec & rec); + int recover(TDir & dir, TTrec & rec, const TDir & refdir); // @cmember Esegue la conversione del tracciato record del file int update(const TTrec& newrec, bool interactive = false);