Revision 0d6ff79f
Von Sven Schöling vor mehr als 4 Jahren hinzugefügt
SL/File.pm | ||
---|---|---|
4 | 4 |
|
5 | 5 |
use parent qw(Rose::Object); |
6 | 6 |
|
7 |
use Clone qw(clone); |
|
8 | 7 |
use SL::File::Backend; |
9 | 8 |
use SL::File::Object; |
10 | 9 |
use SL::DB::History; |
... | ... | |
78 | 77 |
for my $version (2..$maxversion) { |
79 | 78 |
$main::lxdebug->message(LXDebug->DEBUG2(), "clone for version=".($maxversion-$version+1)); |
80 | 79 |
eval { |
81 |
my $clone = clone($fileobj);
|
|
80 |
my $clone = $fileobj->clone;
|
|
82 | 81 |
$clone->version($maxversion-$version+1); |
83 | 82 |
$clone->newest(0); |
84 | 83 |
$main::lxdebug->message(LXDebug->DEBUG2(), "clone version=".$clone->version." mtime=". $clone->mtime); |
SL/File/Object.pm | ||
---|---|---|
124 | 124 |
$_[0]->db_file; |
125 | 125 |
} |
126 | 126 |
|
127 |
sub clone { |
|
128 |
bless +{ %{ $_[0] } }, __PACKAGE__; |
|
129 |
} |
|
130 |
|
|
127 | 131 |
|
128 | 132 |
sub init_db_file { die 'must always have a db file'; } |
129 | 133 |
sub init_loaded { 0 } |
Auch abrufbar als: Unified diff
File: Kein deep clone von Strukturen machen die SL::DB::* Objekte enthalten
Das führt zu Duplizierungen von Singletons, in diesem Fall der
Datenbankverbindung die dann beim abbauen kaputtgehen.
(cherry picked from commit 9a86234c1a5624573a3f2738cf25b526527796c8)
Behebt #358 (redmine).