Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:bmwiedemann:reproducible:distribution:ring1
intltool
fixrace.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fixrace.patch of Package intltool
From: Bernhard M. Wiedemann <bmwiedemann+intltool@suse.de> avoid a race where some processes try to use a partial cache file that is still being written to. Note that we release the lock before load_cache, because if we got the lock, the cache is already completely written and it is OK to have multiple parallel readers Index: intltool-0.51.0/intltool-merge.in =================================================================== --- intltool-0.51.0.orig/intltool-merge.in +++ intltool-0.51.0/intltool-merge.in @@ -43,6 +43,7 @@ use Getopt::Long; use Text::Wrap; use File::Basename; use Encode; +use Fcntl qw(:flock); my $must_end_tag = -1; my $last_depth = -1; @@ -392,11 +393,14 @@ sub load_cache sub get_cached_translation_database { + open(my $lockfh, ">", "$cache_file.lock") or die $!; + flock($lockfh, LOCK_EX) or die "Could not lock '$cache_file.lock' - $!"; my $cache_file_age = -M $cache_file; if (defined $cache_file_age) { if ($cache_file_age <= &get_newest_po_age) { + close($lockfh); &load_cache; return; } @@ -404,6 +408,7 @@ sub get_cached_translation_database } &create_cache; + close($lockfh); } sub add_translation
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor