Update to Storable 1.0.13.
Jarkko Hietaniemi [Mon, 3 Sep 2001 15:11:27 +0000 (15:11 +0000)]
p4raw-id: //depot/perl@11845

ext/Storable/ChangeLog
ext/Storable/Storable.pm
ext/Storable/Storable.xs

index 3f07731..dc71fe5 100644 (file)
@@ -1,3 +1,12 @@
+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:
index 6bc2a75..ba8c0f6 100644 (file)
@@ -1,4 +1,4 @@
-;# $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
 ;#  
@@ -6,6 +6,9 @@
 ;#  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
@@ -63,7 +66,7 @@ package Storable; @ISA = qw(Exporter DynaLoader);
 use AutoLoader;
 use vars qw($forgive_me $VERSION);
 
-$VERSION = '1.012';
+$VERSION = '1.013';
 *AUTOLOAD = \&AutoLoader::AUTOLOAD;            # Grrr...
 
 #
@@ -172,9 +175,8 @@ sub _store {
        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;
@@ -183,7 +185,10 @@ sub _store {
                        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
index 3c79eb6..f2c0e2b 100644 (file)
@@ -3,7 +3,7 @@
  */
 
 /*
- * $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
  *  
@@ -11,6 +11,9 @@
  *  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)
@@ -1261,9 +1264,6 @@ stcxt_t *parent_cxt;
        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;