Hello community,

here is the log from the commit of package vips for openSUSE:Factory checked in 
at 2014-03-01 19:57:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vips (Old)
 and      /work/SRC/openSUSE:Factory/.vips.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "vips"

Changes:
--------
--- /work/SRC/openSUSE:Factory/vips/vips.changes        2014-02-08 
10:34:39.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.vips.new/vips.changes   2014-03-01 
19:57:17.000000000 +0100
@@ -1,0 +2,11 @@
+Thu Feb 27 06:48:05 UTC 2014 - [email protected]
+
+- Update to version 7.38.5
+  * jpeg load from buffer could write to input, thanks Lovell
+  * fix webpload from buffer, thanks Lovell
+  * vips_sequential() could fail under heavy load
+  * remove support for seq mode read for operations like extract
+  * --sharpen=none option to vipsthumbnail was broken
+  * more locking on property create and lookup to help very-threaded systems
+
+-------------------------------------------------------------------

Old:
----
  vips-7.38.3.tar.gz

New:
----
  vips-7.38.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ vips.spec ++++++
--- /var/tmp/diff_new_pack.uapjuT/_old  2014-03-01 19:57:17.000000000 +0100
+++ /var/tmp/diff_new_pack.uapjuT/_new  2014-03-01 19:57:17.000000000 +0100
@@ -20,7 +20,7 @@
 
 Name:           vips
 %define libname lib%{name}
-Version:        7.38.3
+Version:        7.38.5
 Release:        0
 %define short_version 7.38
 %define somajor 37

++++++ vips-7.38.3.tar.gz -> vips-7.38.5.tar.gz ++++++
++++ 10802 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/ChangeLog new/vips-7.38.5/ChangeLog
--- old/vips-7.38.3/ChangeLog   2014-02-04 09:50:35.000000000 +0100
+++ new/vips-7.38.5/ChangeLog   2014-02-25 17:21:36.000000000 +0100
@@ -1,3 +1,14 @@
+24/2/14 started 7.38.5
+- jpeg load from buffer could write to input, thanks Lovell
+- fix webpload from buffer, thanks Lovell
+- vips_sequential() could fail under heavy load
+- remove support for seq mode read for operations like extract
+
+13/2/14 started 7.38.4
+- --sharpen=none option to vipsthumbnail was broken, thanks ferryfax
+- more locking on property create and lookup to help very-threaded systems,
+  thanks Nick 
+
 22/1/14 started 7.38.3
 - undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them,
   thanks ahacking
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/configure.ac new/vips-7.38.5/configure.ac
--- old/vips-7.38.3/configure.ac        2014-02-04 09:50:54.000000000 +0100
+++ new/vips-7.38.5/configure.ac        2014-02-25 17:18:42.000000000 +0100
@@ -2,7 +2,7 @@
 
 # also update the version number in the m4 macros below
 
-AC_INIT([vips], [7.38.3], [[email protected]])
+AC_INIT([vips], [7.38.5], [[email protected]])
 # required for gobject-introspection
 AC_PREREQ(2.62)
 
@@ -17,7 +17,7 @@
 # user-visible library versioning
 m4_define([vips_major_version], [7])
 m4_define([vips_minor_version], [38])
-m4_define([vips_micro_version], [3])
+m4_define([vips_micro_version], [5])
 m4_define([vips_version],
           [vips_major_version.vips_minor_version.vips_micro_version])
 
@@ -37,7 +37,7 @@
 #   binary interface changes not backwards compatible?: reset age to 0
 
 LIBRARY_CURRENT=37
-LIBRARY_REVISION=2
+LIBRARY_REVISION=4
 LIBRARY_AGE=0
 
 # patched into include/vips/version.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanual.html 
new/vips-7.38.5/doc/html/vipsmanual.html
--- old/vips-7.38.3/doc/html/vipsmanual.html    2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanual.html    2014-02-25 17:58:18.000000000 
+0100
@@ -8,7 +8,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
@@ -37,7 +37,7 @@
 </div>
 <!--l. 37--><p class="indent" >  VIPS is currently (v. 7.38, June 2014) in an 
API transition. The API as documented in 7.24 is still complete and
 supported and is the one you should use. The 8.0 API is not yet done and may 
still change before completion.
-<!--l. 44--><p class="indent" >  This manual formatted January 18, 2014
+<!--l. 44--><p class="indent" >  This manual formatted February 25, 2014
                                                                                
        
 
                                                                                
        
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualch1.html 
new/vips-7.38.5/doc/html/vipsmanualch1.html
--- old/vips-7.38.3/doc/html/vipsmanualch1.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualch1.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualch2.html 
new/vips-7.38.5/doc/html/vipsmanualch2.html
--- old/vips-7.38.3/doc/html/vipsmanualch2.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualch2.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualch3.html 
new/vips-7.38.5/doc/html/vipsmanualch3.html
--- old/vips-7.38.3/doc/html/vipsmanualch3.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualch3.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualch4.html 
new/vips-7.38.5/doc/html/vipsmanualch4.html
--- old/vips-7.38.3/doc/html/vipsmanualch4.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualch4.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualli1.html 
new/vips-7.38.5/doc/html/vipsmanualli1.html
--- old/vips-7.38.3/doc/html/vipsmanualli1.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualli1.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualli2.html 
new/vips-7.38.5/doc/html/vipsmanualli2.html
--- old/vips-7.38.3/doc/html/vipsmanualli2.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualli2.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualli3.html 
new/vips-7.38.5/doc/html/vipsmanualli3.html
--- old/vips-7.38.3/doc/html/vipsmanualli3.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualli3.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse1.html 
new/vips-7.38.5/doc/html/vipsmanualse1.html
--- old/vips-7.38.3/doc/html/vipsmanualse1.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse1.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse10.html 
new/vips-7.38.5/doc/html/vipsmanualse10.html
--- old/vips-7.38.3/doc/html/vipsmanualse10.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse10.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse11.html 
new/vips-7.38.5/doc/html/vipsmanualse11.html
--- old/vips-7.38.3/doc/html/vipsmanualse11.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse11.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse12.html 
new/vips-7.38.5/doc/html/vipsmanualse12.html
--- old/vips-7.38.3/doc/html/vipsmanualse12.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse12.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse13.html 
new/vips-7.38.5/doc/html/vipsmanualse13.html
--- old/vips-7.38.3/doc/html/vipsmanualse13.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse13.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse14.html 
new/vips-7.38.5/doc/html/vipsmanualse14.html
--- old/vips-7.38.3/doc/html/vipsmanualse14.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse14.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse15.html 
new/vips-7.38.5/doc/html/vipsmanualse15.html
--- old/vips-7.38.3/doc/html/vipsmanualse15.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse15.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse16.html 
new/vips-7.38.5/doc/html/vipsmanualse16.html
--- old/vips-7.38.3/doc/html/vipsmanualse16.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse16.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse17.html 
new/vips-7.38.5/doc/html/vipsmanualse17.html
--- old/vips-7.38.3/doc/html/vipsmanualse17.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse17.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse18.html 
new/vips-7.38.5/doc/html/vipsmanualse18.html
--- old/vips-7.38.3/doc/html/vipsmanualse18.html        2014-01-18 
11:42:18.000000000 +0100
+++ new/vips-7.38.5/doc/html/vipsmanualse18.html        2014-02-25 
17:58:18.000000000 +0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse2.html 
new/vips-7.38.5/doc/html/vipsmanualse2.html
--- old/vips-7.38.3/doc/html/vipsmanualse2.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse2.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse3.html 
new/vips-7.38.5/doc/html/vipsmanualse3.html
--- old/vips-7.38.3/doc/html/vipsmanualse3.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse3.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse4.html 
new/vips-7.38.5/doc/html/vipsmanualse4.html
--- old/vips-7.38.3/doc/html/vipsmanualse4.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse4.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse5.html 
new/vips-7.38.5/doc/html/vipsmanualse5.html
--- old/vips-7.38.3/doc/html/vipsmanualse5.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse5.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse6.html 
new/vips-7.38.5/doc/html/vipsmanualse6.html
--- old/vips-7.38.3/doc/html/vipsmanualse6.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse6.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse7.html 
new/vips-7.38.5/doc/html/vipsmanualse7.html
--- old/vips-7.38.3/doc/html/vipsmanualse7.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse7.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse8.html 
new/vips-7.38.5/doc/html/vipsmanualse8.html
--- old/vips-7.38.3/doc/html/vipsmanualse8.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse8.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/html/vipsmanualse9.html 
new/vips-7.38.5/doc/html/vipsmanualse9.html
--- old/vips-7.38.3/doc/html/vipsmanualse9.html 2014-01-18 11:42:18.000000000 
+0100
+++ new/vips-7.38.5/doc/html/vipsmanualse9.html 2014-02-25 17:58:18.000000000 
+0100
@@ -7,7 +7,7 @@
 <meta name="originator" content="TeX4ht 
(http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
 <!-- 3,html --> 
 <meta name="src" content="vipsmanual.tex"> 
-<meta name="date" content="2014-01-18 10:42:00"> 
+<meta name="date" content="2014-02-25 16:58:00"> 
 <link rel="stylesheet" type="text/css" href="vipsmanual.css"> 
 </head><body 
 >
Files old/vips-7.38.3/doc/pdf/vipsmanual.pdf and 
new/vips-7.38.5/doc/pdf/vipsmanual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/reference/html/index.html 
new/vips-7.38.5/doc/reference/html/index.html
--- old/vips-7.38.3/doc/reference/html/index.html       2014-02-04 
10:06:04.000000000 +0100
+++ new/vips-7.38.5/doc/reference/html/index.html       2014-02-25 
18:03:22.000000000 +0100
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" 
cellspacing="0"><tr><th valign="middle"><p class="title">VIPS Reference 
Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      For VIPS 7.38.3.
+      For VIPS 7.38.5.
       The latest version of this documentation can be found on the 
       <a class="ulink" 
href="http://http://www.vips.ecs.soton.ac.uk/index.php?title=Documentation"; 
target="_top">VIPS website</a>.
     </p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/reference/html/libvips-version.html 
new/vips-7.38.5/doc/reference/html/libvips-version.html
--- old/vips-7.38.3/doc/reference/html/libvips-version.html     2014-02-04 
10:06:04.000000000 +0100
+++ new/vips-7.38.5/doc/reference/html/libvips-version.html     2014-02-25 
18:03:22.000000000 +0100
@@ -54,7 +54,7 @@
 <a name="libvips-version.details"></a><h2>Details</h2>
 <div class="refsect2">
 <a name="VIPS-VERSION:CAPS"></a><h3>VIPS_VERSION</h3>
-<pre class="programlisting">#define VIPS_VERSION               "7.38.3"
+<pre class="programlisting">#define VIPS_VERSION               "7.38.5"
 </pre>
 <p>
 </p>
@@ -62,7 +62,7 @@
 <hr>
 <div class="refsect2">
 <a name="VIPS-VERSION-STRING:CAPS"></a><h3>VIPS_VERSION_STRING</h3>
-<pre class="programlisting">#define VIPS_VERSION_STRING "7.38.3-Tue Feb  4 
09:00:47 GMT 2014"
+<pre class="programlisting">#define VIPS_VERSION_STRING "7.38.5-Tue Feb 25 
16:50:39 GMT 2014"
 </pre>
 <p>
 </p>
@@ -86,7 +86,7 @@
 <hr>
 <div class="refsect2">
 <a name="VIPS-MICRO-VERSION:CAPS"></a><h3>VIPS_MICRO_VERSION</h3>
-<pre class="programlisting">#define VIPS_MICRO_VERSION (3)
+<pre class="programlisting">#define VIPS_MICRO_VERSION (5)
 </pre>
 <p>
 </p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/doc/reference/libvips-docs.sgml 
new/vips-7.38.5/doc/reference/libvips-docs.sgml
--- old/vips-7.38.3/doc/reference/libvips-docs.sgml     2014-02-04 
10:00:57.000000000 +0100
+++ new/vips-7.38.5/doc/reference/libvips-docs.sgml     2014-02-25 
17:50:51.000000000 +0100
@@ -8,7 +8,7 @@
   <bookinfo>
     <title>VIPS Reference Manual</title>
     <releaseinfo>
-      For VIPS 7.38.3.
+      For VIPS 7.38.5.
       The latest version of this documentation can be found on the 
       <ulink role="online-location"
              
url="http://http://www.vips.ecs.soton.ac.uk/index.php?title=Documentation";>VIPS 
website</ulink>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/conversion/extract.c 
new/vips-7.38.5/libvips/conversion/extract.c
--- old/vips-7.38.3/libvips/conversion/extract.c        2014-01-26 
11:30:04.000000000 +0100
+++ new/vips-7.38.5/libvips/conversion/extract.c        2014-02-25 
17:11:23.000000000 +0100
@@ -193,8 +193,6 @@
        vobject_class->description = _( "extract an area from an image" );
        vobject_class->build = vips_extract_area_build;
 
-       operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED;
-
        VIPS_ARG_IMAGE( class, "input", 0, 
                _( "Input" ), 
                _( "Input image" ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/conversion/ifthenelse.c 
new/vips-7.38.5/libvips/conversion/ifthenelse.c
--- old/vips-7.38.3/libvips/conversion/ifthenelse.c     2014-01-26 
11:30:04.000000000 +0100
+++ new/vips-7.38.5/libvips/conversion/ifthenelse.c     2014-02-25 
17:11:23.000000000 +0100
@@ -470,8 +470,6 @@
        vobject_class->description = _( "ifthenelse an image" );
        vobject_class->build = vips_ifthenelse_build;
 
-       operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED;
-
        VIPS_ARG_IMAGE( class, "cond", -2, 
                _( "Condition" ), 
                _( "Condition input image" ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/conversion/insert.c 
new/vips-7.38.5/libvips/conversion/insert.c
--- old/vips-7.38.3/libvips/conversion/insert.c 2014-01-26 11:30:04.000000000 
+0100
+++ new/vips-7.38.5/libvips/conversion/insert.c 2014-02-25 17:18:42.000000000 
+0100
@@ -354,8 +354,6 @@
        vobject_class->description = _( "insert an image" );
        vobject_class->build = vips_insert_build;
 
-       operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED;
-
        VIPS_ARG_IMAGE( class, "main", -1, 
                _( "Main" ), 
                _( "Main input image" ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/conversion/join.c 
new/vips-7.38.5/libvips/conversion/join.c
--- old/vips-7.38.3/libvips/conversion/join.c   2014-01-26 11:30:04.000000000 
+0100
+++ new/vips-7.38.5/libvips/conversion/join.c   2014-02-25 17:11:23.000000000 
+0100
@@ -228,8 +228,6 @@
        vobject_class->description = _( "join a pair of images" );
        vobject_class->build = vips_join_build;
 
-       operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED;
-
        VIPS_ARG_IMAGE( class, "in1", -1, 
                _( "in1" ), 
                _( "First input image" ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/conversion/sequential.c 
new/vips-7.38.5/libvips/conversion/sequential.c
--- old/vips-7.38.3/libvips/conversion/sequential.c     2014-01-26 
11:30:04.000000000 +0100
+++ new/vips-7.38.5/libvips/conversion/sequential.c     2014-02-25 
17:11:23.000000000 +0100
@@ -16,6 +16,9 @@
  * 4/9/12
  *     - stop all threads on error
  *     - don't stall forever, just delay ahead threads
+ * 25/2/14
+ *     - we were allowing skipahead if the first request was for y>0, but
+ *       this broke on some busy, many-core systems, see comment below
  */
 
 /*
@@ -144,11 +147,9 @@
                return( -1 );
        }
 
-       if( r->top > sequential->y_pos &&
-               sequential->y_pos > 0 ) {
-               /* We have started reading (y_pos > 0) and this request is for
-                * stuff beyond that, stall for a while to give other
-                * threads time to catch up.
+       if( r->top > sequential->y_pos ) {
+               /* This request is for stuff beyond the current read position, 
+                * stall for a while to give other threads time to catch up.
                 * 
                 * The stall can be cancelled by a signal on @ready.
                 *
@@ -156,6 +157,16 @@
                 * deadlock, and we don't fail on timeout, since the timeout 
                 * may be harmless.
                 */
+
+               /* We used to not stall if the read position was zero, ie. if
+                * the first request was for a line some way down the image,
+                * and assume this was extract or somesuch. But this could
+                * sometimes break on busy, many-core systems.
+                *
+                * Think of a better way to support eg. extract safely in
+                * sequential mode.
+                */
+
 #ifdef HAVE_COND_INIT
                gint64 time;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/foreign/dzsave.c 
new/vips-7.38.5/libvips/foreign/dzsave.c
--- old/vips-7.38.3/libvips/foreign/dzsave.c    2014-01-26 11:30:04.000000000 
+0100
+++ new/vips-7.38.5/libvips/foreign/dzsave.c    2014-02-25 17:11:23.000000000 
+0100
@@ -36,9 +36,6 @@
  *     - add --angle option
  * 19/6/13
  *     - faster --centre logic, thanks Kacey
- * 25/6/13
- *     - ping classes before starting workers, see comment below, thanks
- *       Kacey
  */
 
 /*
@@ -1170,37 +1167,6 @@
        return( 0 );
 }
 
-static void *
-vips_class_ping( VipsObjectClass *class, void *dummy )
-{
-        return( NULL );
-}
-
-/* Loop over all classes. This will make sure they are all built.
- *
- * vips_dzsave() runs a set of pipelines from worker threads, and if the
- * operations it uses have not all been used previously, they can run their
- * class_init in parallel.
- *
- * This should be safe but seems not to be for reasons I don't understand.
- * For now, just ping all classes from the main thread before we set the
- * workers going. 
- *
- * This stops a crash on very many core machines, see
- *
- * https://github.com/jcupitt/libvips/issues/64
- */
-static void
-vips_class_ping_all( void )
-{
-       GType base;
-
-       if( !(base = g_type_from_name( "VipsObject" )) )
-               return;
-       vips_class_map_all( base, 
-               (VipsClassMapFn) vips_class_ping, NULL );
-}
-
 static int
 vips_foreign_save_dz_build( VipsObject *object )
 {
@@ -1328,10 +1294,6 @@
        if( pyramid_mkdir( dz ) )
                return( -1 );
 
-       /* Build all vips classes, see comment above. 
-        */
-       vips_class_ping_all();
-
        if( vips_sink_disc( save->ready, pyramid_strip, dz ) )
                return( -1 );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/foreign/jpeg2vips.c 
new/vips-7.38.5/libvips/foreign/jpeg2vips.c
--- old/vips-7.38.3/libvips/foreign/jpeg2vips.c 2014-02-03 17:17:31.000000000 
+0100
+++ new/vips-7.38.5/libvips/foreign/jpeg2vips.c 2014-02-25 17:11:23.000000000 
+0100
@@ -55,6 +55,8 @@
  *     - attach IPCT data (app13), thanks Gary
  * 6/7/13
  *     - null-terminate exif strings, thanks Mike
+ * 24/2/14
+ *     - don't write to our input buffer, thanks Lovell
  */
 
 /*
@@ -891,8 +893,8 @@
        int y;
 
 #ifdef DEBUG
-       printf( "read_jpeg_generate: line %d, %d rows\n", 
-               r->top, r->height );
+       printf( "read_jpeg_generate: %p line %d, %d rows\n", 
+               g_thread_self(), r->top, r->height );
 #endif /*DEBUG*/
 
        VIPS_GATE_START( "read_jpeg_generate: work" );
@@ -1104,24 +1106,23 @@
 static boolean
 fill_input_buffer (j_decompress_ptr cinfo)
 {
+  static const JOCTET eoi_buffer[4] = {
+    (JOCTET) 0xFF, (JOCTET) JPEG_EOI, 0, 0
+  };
+
   InputBuffer *src = (InputBuffer *) cinfo->src;
-  size_t nbytes;
 
   if (src->start_of_file) {
-    nbytes = src->len;
+    src->pub.next_input_byte = src->buf;
+    src->pub.bytes_in_buffer = src->len;
+    src->start_of_file = FALSE;
   }
   else {
     WARNMS(cinfo, JWRN_JPEG_EOF);
-    /* Insert a fake EOI marker */
-    src->buf[0] = (JOCTET) 0xFF;
-    src->buf[1] = (JOCTET) JPEG_EOI;
-    nbytes = 2;
+    src->pub.next_input_byte = eoi_buffer;
+    src->pub.bytes_in_buffer = 2;
   }
 
-  src->pub.next_input_byte = src->buf;
-  src->pub.bytes_in_buffer = nbytes;
-  src->start_of_file = FALSE;
-
   return TRUE;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/foreign/webp2vips.c 
new/vips-7.38.5/libvips/foreign/webp2vips.c
--- old/vips-7.38.3/libvips/foreign/webp2vips.c 2014-01-26 11:30:04.000000000 
+0100
+++ new/vips-7.38.5/libvips/foreign/webp2vips.c 2014-02-25 17:19:23.000000000 
+0100
@@ -1,7 +1,9 @@
 /* read with libwebp
  *
  * 6/8/13
- *     - from webp2vips.c
+ *     - from png2vips.c
+ * 24/2/14
+ *     - oops, buffer path was broken, thanks Lovell
  */
 
 /*
@@ -66,10 +68,15 @@
         */
        char *filename;
 
-       /* Memory source.
+       /* Memory source. We se gint64 rather than size_t since we use
+        * vips_file_length() and vips__mmap() for file sources.
         */
-       void *buf;
-       size_t len;
+       void *data;
+       gint64 length;
+
+       /* If we are opening a file object, the fd.
+        */
+       int fd;
 
        /* Decoder config.
         */
@@ -95,43 +102,58 @@
 static int
 read_free( Read *read )
 {
-       VIPS_FREE( read->filename );
        VIPS_FREEF( WebPIDelete, read->idec );
        WebPFreeDecBuffer( &read->config.output );
+
+       if( read->fd &&
+               read->data &&
+               read->length ) { 
+               vips__munmap( read->data, read->length ); 
+               read->data = NULL;
+               read->length = 0;
+       }
+
+       VIPS_FREEF( vips_tracked_close, read->fd ); 
+       VIPS_FREE( read->filename );
        VIPS_FREE( read );
 
        return( 0 );
 }
 
 static Read *
-read_new( const char *filename, void *buf, size_t len )
+read_new( const char *filename, void *data, size_t length )
 {
        Read *read;
-       unsigned char header[MINIMAL_HEADER];
 
        if( !(read = VIPS_NEW( NULL, Read )) )
                return( NULL );
 
        read->filename = g_strdup( filename );
-       read->buf = buf;
-       read->len = len;
+       read->data = data;
+       read->length = length;
+       read->fd = 0;
        read->idec = NULL;
 
-       WebPInitDecoderConfig( &read->config );
-       if( filename ) {
-               if( vips__get_bytes( filename, header, MINIMAL_HEADER ) &&
-                       WebPGetFeatures( header, MINIMAL_HEADER, 
-                               &read->config.input ) != VP8_STATUS_OK ) {
+       if( read->filename ) { 
+               /* libwebp makes streaming from a file source very hard. We 
+                * have to read to a full memory buffer, then copy to out.
+                *
+                * mmap the input file, it's slightly quicker.
+                */
+               if( !(read->fd = vips__open_image_read( read->filename )) ||
+                       (read->length = vips_file_length( read->fd )) < 0 ||
+                       !(read->data = vips__mmap( read->fd, 
+                               FALSE, read->length, 0 )) ) {
                        read_free( read );
                        return( NULL );
                }
        }
-       else {
-               if( WebPGetFeatures( read->buf, read->len, 
-                       &read->config.input ) != VP8_STATUS_OK ) {
-                       read_free( read );
-                       return( NULL );
-               }
+
+       WebPInitDecoderConfig( &read->config );
+       if( WebPGetFeatures( read->data, MINIMAL_HEADER, 
+               &read->config.input ) != VP8_STATUS_OK ) {
+               read_free( read );
+               return( NULL );
        }
 
        if( read->config.input.has_alpha )
@@ -186,51 +208,27 @@
 {
        VipsImage **t = (VipsImage **) 
                vips_object_local_array( VIPS_OBJECT( out ), 3 );
-       gint64 length;
-       void *data; 
-       int fd;
        webp_decoder decoder;
 
-       /* libwebp makes streaming very hard. We have to read to a full memory
-        * buffer, then copy to out.
-        *
-        * mmap the input file, it's slightly quicker.
-        */
        t[0] = vips_image_new_buffer();
        if( read_header( read, t[0] ) )
                return( -1 );
        if( vips_image_write_prepare( t[0] ) ) 
                return( -1 );
 
-       if( !(fd = vips__open_image_read( read->filename )) )
-               return( -1 );
-       if( (length = vips_file_length( fd )) < 0 ) {
-               vips_tracked_close( fd ); 
-               return( -1 );
-       }
-       if( !(data = vips__mmap( fd, FALSE, length, 0 )) ) {
-               vips_tracked_close( fd ); 
-               return( -1 );
-       }
-
        if( t[0]->Bands == 3 )
                decoder = WebPDecodeRGBInto;
        else
                decoder = WebPDecodeRGBAInto;
 
-       if( !decoder( (uint8_t *) data, length, 
+       if( !decoder( (uint8_t *) read->data, read->length, 
                VIPS_IMAGE_ADDR( t[0], 0, 0 ), 
                VIPS_IMAGE_SIZEOF_IMAGE( t[0] ),
                VIPS_IMAGE_SIZEOF_LINE( t[0] ) ) ) { 
-               vips__munmap( data, length ); 
-               vips_tracked_close( fd ); 
                vips_error( "webp2vips", "%s", _( "unable to read pixels" ) ); 
                return( -1 );
        }
 
-       vips__munmap( data, length ); 
-       vips_tracked_close( fd ); 
-
        if( vips_image_write( t[0], out ) )
                return( -1 );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/include/vips/version.h 
new/vips-7.38.5/libvips/include/vips/version.h
--- old/vips-7.38.3/libvips/include/vips/version.h      2014-02-04 
10:00:56.000000000 +0100
+++ new/vips-7.38.5/libvips/include/vips/version.h      2014-02-25 
17:50:50.000000000 +0100
@@ -4,11 +4,11 @@
 #ifndef VIPS_VERSION_H
 #define VIPS_VERSION_H
 
-#define VIPS_VERSION           "7.38.3"
-#define VIPS_VERSION_STRING    "7.38.3-Tue Feb  4 09:00:47 GMT 2014"
+#define VIPS_VERSION           "7.38.5"
+#define VIPS_VERSION_STRING    "7.38.5-Tue Feb 25 16:50:39 GMT 2014"
 #define VIPS_MAJOR_VERSION     (7)
 #define VIPS_MINOR_VERSION     (38)
-#define VIPS_MICRO_VERSION     (3)
+#define VIPS_MICRO_VERSION     (5)
 
 /* Not really anything to do with versions, but this is a handy place to put
  * it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/iofuncs/object.c 
new/vips-7.38.5/libvips/iofuncs/object.c
--- old/vips-7.38.3/libvips/iofuncs/object.c    2014-02-04 09:49:29.000000000 
+0100
+++ new/vips-7.38.5/libvips/iofuncs/object.c    2014-02-25 17:18:42.000000000 
+0100
@@ -349,7 +349,13 @@
 VipsArgument *
 vips__argument_table_lookup( VipsArgumentTable *table, GParamSpec *pspec )
 {
-       return( g_hash_table_lookup( table, pspec ) );
+       VipsArgument *argument;
+
+       g_mutex_lock( vips__global_lock );
+       argument = (VipsArgument *) g_hash_table_lookup( table, pspec );
+       g_mutex_unlock( vips__global_lock );
+
+       return( argument );
 }
 
 static void
@@ -1400,6 +1406,7 @@
        GParamSpec *pspec, VipsArgumentFlags flags, int priority, guint offset )
 {
        VipsArgumentClass *argument_class = g_new( VipsArgumentClass, 1 );
+       GSList *argument_table_traverse;
 
 #ifdef DEBUG
        printf( "vips_object_class_install_argument: %p %s %s\n", 
@@ -1408,10 +1415,13 @@
                g_param_spec_get_name( pspec ) );
 #endif /*DEBUG*/
 
+       /* object_class->argument* is shared, so we must lock.
+        */
+       g_mutex_lock( vips__global_lock );
+
        /* Must be a new one.
         */
-       g_assert( !vips__argument_table_lookup( object_class->argument_table,
-               pspec ) );
+       g_assert( !g_hash_table_lookup( object_class->argument_table, pspec ) );
 
        /* Mustn't have INPUT and OUTPUT both set.
         */
@@ -1444,10 +1454,21 @@
                        G_TYPE_FROM_CLASS( object_class );
        }
 
-       object_class->argument_table_traverse = g_slist_prepend(
-               object_class->argument_table_traverse, argument_class );
-       object_class->argument_table_traverse = g_slist_sort(
-               object_class->argument_table_traverse, traverse_sort );
+       /* We read argument_table_traverse without a lock (eg. see 
+        * vips_argument_map()), so we must be very careful updating it.
+        */
+       argument_table_traverse = 
+               g_slist_copy( object_class->argument_table_traverse );
+
+       argument_table_traverse = g_slist_prepend(
+               argument_table_traverse, argument_class );
+       argument_table_traverse = g_slist_sort(
+               argument_table_traverse, traverse_sort );
+       VIPS_SWAP( GSList *, 
+               argument_table_traverse, 
+               object_class->argument_table_traverse ); 
+
+       g_slist_free( argument_table_traverse );  
 
 #ifdef DEBUG
 {
@@ -1467,6 +1488,8 @@
        }
 }
 #endif /*DEBUG*/
+
+       g_mutex_unlock( vips__global_lock );
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/libvips/iofuncs/sinkmemory.c 
new/vips-7.38.5/libvips/iofuncs/sinkmemory.c
--- old/vips-7.38.3/libvips/iofuncs/sinkmemory.c        2013-12-16 
11:21:17.000000000 +0100
+++ new/vips-7.38.5/libvips/iofuncs/sinkmemory.c        2014-02-25 
17:11:23.000000000 +0100
@@ -180,7 +180,7 @@
        VipsRect image;
        VipsRect tile;
 
-       VIPS_DEBUG_MSG( "sink_memory_area_allocate_fn:\n" );
+       VIPS_DEBUG_MSG( "sink_memory_area_allocate_fn: %p\n", g_thread_self() );
 
        /* Is the state x/y OK? New line or maybe new buffer or maybe even 
         * all done.
@@ -231,7 +231,8 @@
         */
        wstate->area = memory->area;
 
-       VIPS_DEBUG_MSG( "  allocated %d x %d:\n", tile.left, tile.top );
+       VIPS_DEBUG_MSG( "  %p allocated %d x %d:\n", 
+               g_thread_self(), state->pos.left, state->pos.top );
 
        /* Add to the number of writers on the area.
         */
@@ -260,13 +261,13 @@
        int result;
 
        VIPS_DEBUG_MSG( "sink_memory_area_work_fn: %p %d x %d\n", 
-               state, state->pos.left, state->pos.top );
+               g_thread_self(), state->pos.left, state->pos.top );
 
        result = vips_region_prepare_to( state->reg, memory->region, 
                &state->pos, state->pos.left, state->pos.top );
 
        VIPS_DEBUG_MSG( "sink_memory_area_work_fn: %p result = %d\n", 
-               state, result );
+               g_thread_self(), result );
 
        /* Tell the allocator we're done.
         */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/vips-7.38.3/tools/vipsthumbnail.c new/vips-7.38.5/tools/vipsthumbnail.c
--- old/vips-7.38.3/tools/vipsthumbnail.c       2014-01-26 11:30:05.000000000 
+0100
+++ new/vips-7.38.5/tools/vipsthumbnail.c       2014-02-25 17:11:23.000000000 
+0100
@@ -608,15 +608,15 @@
 static int
 thumbnail_process( VipsObject *process, const char *filename )
 {
+       VipsImage *sharpen = thumbnail_sharpen( process );
+
        VipsImage *in;
        VipsInterpolate *interp;
-       VipsImage *sharpen;
        VipsImage *thumbnail;
        VipsImage *crop;
 
        if( !(in = thumbnail_open( process, filename )) ||
                !(interp = thumbnail_interpolator( process, in )) ||
-               !(sharpen = thumbnail_sharpen( process )) ||
                !(thumbnail = 
                        thumbnail_shrink( process, in, interp, sharpen )) ||
                !(crop = thumbnail_crop( process, thumbnail )) ||

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to