Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0d6ff79f

Von Sven Schöling vor mehr als 3 Jahren hinzugefügt

  • ID 0d6ff79fc2aae923ab03b68e15d59e0d834b77b4
  • Vorgänger 731991d4
  • Nachfolger 115b92fc

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).

Unterschiede anzeigen:

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