+Tue Aug 28 23:53:20 MEST 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
+
+. Description:
+
+ Fixed truncation race with lock_retrieve() in lock_store().
+ The file has to be truncated only once the exclusive lock is held.
+
+ Removed spurious debugging messages in .xs file.
+
Sun Jul 1 13:27:32 MEST 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
. Description:
-;# $Id: Storable.pm,v 1.0.1.11 2001/07/01 11:22:14 ram Exp $
+;# $Id: Storable.pm,v 1.0.1.12 2001/08/28 21:51:51 ram Exp $
;#
;# Copyright (c) 1995-2000, Raphael Manfredi
;#
;# in the README file that comes with the distribution.
;#
;# $Log: Storable.pm,v $
+;# Revision 1.0.1.12 2001/08/28 21:51:51 ram
+;# patch13: fixed truncation race with lock_retrieve() in lock_store()
+;#
;# Revision 1.0.1.11 2001/07/01 11:22:14 ram
;# patch12: systematically use "=over 4" for POD linters
;# patch12: updated version number
use AutoLoader;
use vars qw($forgive_me $VERSION);
-$VERSION = '1.012';
+$VERSION = '1.013';
*AUTOLOAD = \&AutoLoader::AUTOLOAD; # Grrr...
#
logcroak "not a reference" unless ref($self);
logcroak "wrong argument number" unless @_ == 2; # No @foo in arglist
local *FILE;
- open(FILE, ">$file") || logcroak "can't create $file: $!";
- binmode FILE; # Archaic systems...
if ($use_locking) {
+ open(FILE, ">>$file") || logcroak "can't write into $file: $!";
unless (&CAN_FLOCK) {
logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O";
return undef;
logcroak "can't get exclusive lock on $file: $!";
truncate FILE, 0;
# Unlocking will happen when FILE is closed
+ } else {
+ open(FILE, ">$file") || logcroak "can't create $file: $!";
}
+ binmode FILE; # Archaic systems...
my $da = $@; # Don't mess if called from exception handler
my $ret;
# Call C routine nstore or pstore, depending on network order
*/
/*
- * $Id: Storable.xs,v 1.0.1.9 2001/07/01 11:25:02 ram Exp $
+ * $Id: Storable.xs,v 1.0.1.10 2001/08/28 21:52:14 ram Exp $
*
* Copyright (c) 1995-2000, Raphael Manfredi
*
* in the README file that comes with the distribution.
*
* $Log: Storable.xs,v $
+ * Revision 1.0.1.10 2001/08/28 21:52:14 ram
+ * patch13: removed spurious debugging messages
+ *
* Revision 1.0.1.9 2001/07/01 11:25:02 ram
* patch12: fixed memory corruption on croaks during thaw()
* patch12: made code compile cleanly with -Wall (Jarkko Hietaniemi)
cxt->prev = parent_cxt;
SET_STCXT(cxt);
- TRACEME(("kbuf has %d bytes at 0x%x", ksiz, kbuf));
- TRACEME(("mbuf has %d bytes at 0x%x", msiz, mbase));
-
ASSERT(!cxt->s_dirty, ("clean context"));
return cxt;