1 diff -Naur libsigc++-1.2.5/sigc++/macros/signal.h.m4 libsigc++-1.2.7/sigc++/macros/signal.h.m4
2 --- libsigc++-1.2.5/sigc++/macros/signal.h.m4 2003-03-06 09:06:12.000000000 +0100
3 +++ libsigc++-1.2.7/sigc++/macros/signal.h.m4 2005-01-29 00:10:34.000000000 +0100
7 void cleanup(); // nothrow
9 + void _remove(SignalConnectionNode* c);
12 class LIBSIGC_API SignalBase
\r
13 diff -Naur libsigc++-1.2.5/sigc++/object.h libsigc++-1.2.7/sigc++/object.h
14 --- libsigc++-1.2.5/sigc++/object.h 2003-05-08 21:35:11.000000000 +0200
15 +++ libsigc++-1.2.7/sigc++/object.h 2012-02-14 13:08:00.193044640 +0100
17 virtual void unreference() const;
\r
18 virtual void set_manage();
\r
20 - ObjectBase& operator=(const ObjectBase& /* o */)
\r
21 + ObjectBase& operator=(const ObjectBase& o)
\r
28 virtual ~ObjectBase()=0;
\r
31 + Control_* control() const
\r
33 + return const_cast<ObjectBase *>(this)->control();
\r
35 Control_* control()
\r
40 Ptr(const Ptr<T2>& p2)
\r
42 - T* test_assignment_ = (T2*)0;
\r
49 Ptr& operator=(const Ptr<T2>& p2)
\r
50 - { T *test_assignment_=(T2*)0; reset(p2.get()); return *this; }
\r
51 + { reset(p2.get()); return *this; }
\r
53 Ptr& operator=(const Ptr& p)
\r
54 { reset(p.get()); return *this; }
\r
61 void reset(T* t = 0)
\r
67 #endif // SIGC_OBJECT
\r
69 diff -Naur libsigc++-1.2.5/sigc++/signal.cc libsigc++-1.2.7/sigc++/signal.cc
70 --- libsigc++-1.2.5/sigc++/signal.cc 2002-12-12 20:18:24.000000000 +0100
71 +++ libsigc++-1.2.7/sigc++/signal.cc 2005-01-29 00:10:34.000000000 +0100
75 SignalConnectionNode* i = begin_;
77 - while(begin_ && begin_->defered_)
78 - begin_ = begin_->next_;
80 - while(end_ && end_->defered_)
83 - // Hmm, this looks a bit tricky to me. The code above removes all
84 - // elements from the front and the back that have defered_ = true set.
85 - // But the following loop unreferences *all* defered elements, including
86 - // those that are still in the list.
88 - // I don't know whether this is a bug -- it's possible that defered nodes
89 - // are always at the front or back. If not, a node could be unreferenced
90 - // twice which is bad.
96 SignalConnectionNode* next = i->next_;
118 void SignalNode::remove(SignalConnectionNode* c)
123 - c->prev_->next_=c->next_;
128 - c->next_->prev_=c->prev_;
144 +void SignalNode::_remove(SignalConnectionNode* c)
147 + c->prev_->next_=c->next_;
151 + c->next_->prev_=c->prev_;
159 /**********************************************************/