[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdepim/indexlib
From:       Luís Pedro Coelho <luis () luispedro ! org>
Date:       2006-09-05 0:51:51
Message-ID: 1157417511.101096.26545.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 581014 by luis_pedro:

Cleanup correctly when deleting. Previously, references would be wrong.


 M  +9 -0      leafdata.cpp  
 M  +12 -0     memreference.h  


--- branches/KDE/3.5/kdepim/indexlib/leafdata.cpp #581013:581014
@@ -117,6 +117,15 @@
 		unsigned nbytes = end().raw() - first.raw();
 		std::memmove( const_cast<unsigned char*>( first.raw() ), next.raw(), nbytes );
 		set_usedbytes( usedbytes() - nbytes );
+		unsigned char* iter = first.raw();
+		for ( ; iter < end().raw(); ++iter) {
+			if (*iter) --*iter;
+			else {
+				++iter;
+				byte_io::write<uint32_t>(iter,byte_io::read<uint32_t>(iter)-1);
+				iter += byte_io::byte_lenght<uint32_t>();
+			}
+		}
 	}
 }
 
--- branches/KDE/3.5/kdepim/indexlib/memreference.h #581013:581014
@@ -85,12 +85,24 @@
 }
 
 template <typename T>
+memory_reference<T> operator --( memory_reference<T> ref ) {
+	return ref = ref - 1;
+}
+
+template <typename T>
 T operator ++( memory_reference<T> ref, int ) {
 	T v = ref;
 	ref = ref + 1;
 	return v;
 }
 
+template <typename T>
+T operator --( memory_reference<T> ref, int ) {
+	T v = ref;
+	ref = ref - 1;
+	return v;
+}
+
 template <typename T, typename U>
 memory_reference<T> operator -= ( memory_reference<T> ref, U v ) {
 	return ref = ref - v;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic