From 3dc2757330230a521a4693eb5d7bbea6ef292e2a Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 5 Mar 2020 13:09:28 +0000 Subject: [PATCH 1/3] add more "const" decls --- libvips/arithmetic/boolean.c | 17 ++++++----- libvips/arithmetic/linear.c | 5 ++-- libvips/arithmetic/math2.c | 8 ++--- libvips/arithmetic/relational.c | 17 ++++++----- libvips/arithmetic/remainder.c | 5 ++-- libvips/include/vips/arithmetic.h | 49 +++++++++++++++++++------------ 6 files changed, 60 insertions(+), 41 deletions(-) diff --git a/libvips/arithmetic/boolean.c b/libvips/arithmetic/boolean.c index c4fcf18d..ad978fe1 100644 --- a/libvips/arithmetic/boolean.c +++ b/libvips/arithmetic/boolean.c @@ -562,7 +562,7 @@ vips_boolean_const_init( VipsBooleanConst *boolean_const ) static int vips_boolean_constv( VipsImage *in, VipsImage **out, - VipsOperationBoolean operation, double *c, int n, va_list ap ) + VipsOperationBoolean operation, const double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -609,7 +609,7 @@ vips_boolean_constv( VipsImage *in, VipsImage **out, */ int vips_boolean_const( VipsImage *in, VipsImage **out, - VipsOperationBoolean boolean, double *c, int n, ... ) + VipsOperationBoolean boolean, const double *c, int n, ... ) { va_list ap; int result; @@ -637,7 +637,8 @@ vips_boolean_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_andimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) { va_list ap; int result; @@ -666,7 +667,8 @@ vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_orimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) { va_list ap; int result; @@ -695,7 +697,8 @@ vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_eorimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) { va_list ap; int result; @@ -724,7 +727,7 @@ vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_lshift_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; @@ -753,7 +756,7 @@ vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_rshift_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/linear.c b/libvips/arithmetic/linear.c index 4a376a55..ebf4fb33 100644 --- a/libvips/arithmetic/linear.c +++ b/libvips/arithmetic/linear.c @@ -453,7 +453,7 @@ vips_linear_init( VipsLinear *linear ) static int vips_linearv( VipsImage *in, VipsImage **out, - double *a, double *b, int n, va_list ap ) + const double *a, const double *b, int n, va_list ap ) { VipsArea *area_a; VipsArea *area_b; @@ -500,7 +500,8 @@ vips_linearv( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_linear( VipsImage *in, VipsImage **out, double *a, double *b, int n, ... ) +vips_linear( VipsImage *in, VipsImage **out, + const double *a, const double *b, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/math2.c b/libvips/arithmetic/math2.c index cbcd2b99..dd3e5323 100644 --- a/libvips/arithmetic/math2.c +++ b/libvips/arithmetic/math2.c @@ -420,7 +420,7 @@ vips_math2_const_init( VipsMath2Const *math2_const ) static int vips_math2_constv( VipsImage *in, VipsImage **out, - VipsOperationMath2 math2, double *c, int n, va_list ap ) + VipsOperationMath2 math2, const double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -470,7 +470,7 @@ vips_math2_constv( VipsImage *in, VipsImage **out, */ int vips_math2_const( VipsImage *in, VipsImage **out, - VipsOperationMath2 math2, double *c, int n, ... ) + VipsOperationMath2 math2, const double *c, int n, ... ) { va_list ap; int result; @@ -496,7 +496,7 @@ vips_math2_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_pow_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; @@ -523,7 +523,7 @@ vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_wop_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/relational.c b/libvips/arithmetic/relational.c index f2f8f817..d740ea5c 100644 --- a/libvips/arithmetic/relational.c +++ b/libvips/arithmetic/relational.c @@ -598,7 +598,7 @@ vips_relational_const_init( VipsRelationalConst *relational_const ) static int vips_relational_constv( VipsImage *in, VipsImage **out, - VipsOperationRelational relational, double *c, int n, va_list ap ) + VipsOperationRelational relational, const double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -645,7 +645,7 @@ vips_relational_constv( VipsImage *in, VipsImage **out, */ int vips_relational_const( VipsImage *in, VipsImage **out, - VipsOperationRelational relational, double *c, int n, ... ) + VipsOperationRelational relational, const double *c, int n, ... ) { va_list ap; int result; @@ -671,7 +671,7 @@ vips_relational_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_equal_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; @@ -698,7 +698,8 @@ vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_notequal_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) { va_list ap; int result; @@ -725,7 +726,7 @@ vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_less_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; @@ -752,7 +753,7 @@ vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_lesseq_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; @@ -779,7 +780,7 @@ vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_more_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; @@ -806,7 +807,7 @@ vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_moreeq_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/remainder.c b/libvips/arithmetic/remainder.c index 75df8f4d..3c994345 100644 --- a/libvips/arithmetic/remainder.c +++ b/libvips/arithmetic/remainder.c @@ -333,7 +333,7 @@ vips_remainder_const_init( VipsRemainderConst *remainder_const ) static int vips_remainder_constv( VipsImage *in, VipsImage **out, - double *c, int n, va_list ap ) + const double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -379,7 +379,8 @@ vips_remainder_constv( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_remainder_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +vips_remainder_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/include/vips/arithmetic.h b/libvips/include/vips/arithmetic.h index ce95399a..3c9c7aa9 100644 --- a/libvips/include/vips/arithmetic.h +++ b/libvips/include/vips/arithmetic.h @@ -185,14 +185,14 @@ int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_linear( VipsImage *in, VipsImage **out, - double *a, double *b, int n, ... ) + const double *a, const double *b, int n, ... ) __attribute__((sentinel)); int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) __attribute__((sentinel)); int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_remainder_const( VipsImage *in, VipsImage **out, - double *c, int n, ... ) + const double *c, int n, ... ) __attribute__((sentinel)); int vips_remainder_const1( VipsImage *in, VipsImage **out, double c, ... ) @@ -279,19 +279,25 @@ int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_relational_const( VipsImage *in, VipsImage **out, - VipsOperationRelational relational, double *c, int n, ... ) + VipsOperationRelational relational, const double *c, int n, ... ) __attribute__((sentinel)); -int vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_equal_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_notequal_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_less_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_lesseq_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_more_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_moreeq_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); int vips_relational_const1( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double c, ... ) @@ -324,17 +330,22 @@ int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_boolean_const( VipsImage *in, VipsImage **out, - VipsOperationBoolean boolean, double *c, int n, ... ) + VipsOperationBoolean boolean, const double *c, int n, ... ) __attribute__((sentinel)); -int vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_andimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_orimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_eorimage_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_lshift_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_rshift_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); int vips_boolean_const1( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double c, ... ) @@ -358,11 +369,13 @@ int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_math2_const( VipsImage *in, VipsImage **out, - VipsOperationMath2 math2, double *c, int n, ... ) + VipsOperationMath2 math2, const double *c, int n, ... ) __attribute__((sentinel)); -int vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_pow_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); -int vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) +int vips_wop_const( VipsImage *in, VipsImage **out, + const double *c, int n, ... ) __attribute__((sentinel)); int vips_math2_const1( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double c, ... ) From 6a2fbbaed7345a144c84e4b07c3ced040fde7efd Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 5 Mar 2020 13:40:07 +0000 Subject: [PATCH 2/3] Revert "add more "const" decls" This reverts commit 3dc2757330230a521a4693eb5d7bbea6ef292e2a. --- libvips/arithmetic/boolean.c | 17 +++++------ libvips/arithmetic/linear.c | 5 ++-- libvips/arithmetic/math2.c | 8 ++--- libvips/arithmetic/relational.c | 17 +++++------ libvips/arithmetic/remainder.c | 5 ++-- libvips/include/vips/arithmetic.h | 49 ++++++++++++------------------- 6 files changed, 41 insertions(+), 60 deletions(-) diff --git a/libvips/arithmetic/boolean.c b/libvips/arithmetic/boolean.c index ad978fe1..c4fcf18d 100644 --- a/libvips/arithmetic/boolean.c +++ b/libvips/arithmetic/boolean.c @@ -562,7 +562,7 @@ vips_boolean_const_init( VipsBooleanConst *boolean_const ) static int vips_boolean_constv( VipsImage *in, VipsImage **out, - VipsOperationBoolean operation, const double *c, int n, va_list ap ) + VipsOperationBoolean operation, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -609,7 +609,7 @@ vips_boolean_constv( VipsImage *in, VipsImage **out, */ int vips_boolean_const( VipsImage *in, VipsImage **out, - VipsOperationBoolean boolean, const double *c, int n, ... ) + VipsOperationBoolean boolean, double *c, int n, ... ) { va_list ap; int result; @@ -637,8 +637,7 @@ vips_boolean_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_andimage_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -667,8 +666,7 @@ vips_andimage_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_orimage_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -697,8 +695,7 @@ vips_orimage_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_eorimage_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -727,7 +724,7 @@ vips_eorimage_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_lshift_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -756,7 +753,7 @@ vips_lshift_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_rshift_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/linear.c b/libvips/arithmetic/linear.c index ebf4fb33..4a376a55 100644 --- a/libvips/arithmetic/linear.c +++ b/libvips/arithmetic/linear.c @@ -453,7 +453,7 @@ vips_linear_init( VipsLinear *linear ) static int vips_linearv( VipsImage *in, VipsImage **out, - const double *a, const double *b, int n, va_list ap ) + double *a, double *b, int n, va_list ap ) { VipsArea *area_a; VipsArea *area_b; @@ -500,8 +500,7 @@ vips_linearv( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_linear( VipsImage *in, VipsImage **out, - const double *a, const double *b, int n, ... ) +vips_linear( VipsImage *in, VipsImage **out, double *a, double *b, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/math2.c b/libvips/arithmetic/math2.c index dd3e5323..cbcd2b99 100644 --- a/libvips/arithmetic/math2.c +++ b/libvips/arithmetic/math2.c @@ -420,7 +420,7 @@ vips_math2_const_init( VipsMath2Const *math2_const ) static int vips_math2_constv( VipsImage *in, VipsImage **out, - VipsOperationMath2 math2, const double *c, int n, va_list ap ) + VipsOperationMath2 math2, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -470,7 +470,7 @@ vips_math2_constv( VipsImage *in, VipsImage **out, */ int vips_math2_const( VipsImage *in, VipsImage **out, - VipsOperationMath2 math2, const double *c, int n, ... ) + VipsOperationMath2 math2, double *c, int n, ... ) { va_list ap; int result; @@ -496,7 +496,7 @@ vips_math2_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_pow_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -523,7 +523,7 @@ vips_pow_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_wop_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/relational.c b/libvips/arithmetic/relational.c index d740ea5c..f2f8f817 100644 --- a/libvips/arithmetic/relational.c +++ b/libvips/arithmetic/relational.c @@ -598,7 +598,7 @@ vips_relational_const_init( VipsRelationalConst *relational_const ) static int vips_relational_constv( VipsImage *in, VipsImage **out, - VipsOperationRelational relational, const double *c, int n, va_list ap ) + VipsOperationRelational relational, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -645,7 +645,7 @@ vips_relational_constv( VipsImage *in, VipsImage **out, */ int vips_relational_const( VipsImage *in, VipsImage **out, - VipsOperationRelational relational, const double *c, int n, ... ) + VipsOperationRelational relational, double *c, int n, ... ) { va_list ap; int result; @@ -671,7 +671,7 @@ vips_relational_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_equal_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -698,8 +698,7 @@ vips_equal_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_notequal_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -726,7 +725,7 @@ vips_notequal_const( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_less_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -753,7 +752,7 @@ vips_less_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_lesseq_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -780,7 +779,7 @@ vips_lesseq_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_more_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; @@ -807,7 +806,7 @@ vips_more_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) * Returns: 0 on success, -1 on error */ int -vips_moreeq_const( VipsImage *in, VipsImage **out, const double *c, int n, ... ) +vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/arithmetic/remainder.c b/libvips/arithmetic/remainder.c index 3c994345..75df8f4d 100644 --- a/libvips/arithmetic/remainder.c +++ b/libvips/arithmetic/remainder.c @@ -333,7 +333,7 @@ vips_remainder_const_init( VipsRemainderConst *remainder_const ) static int vips_remainder_constv( VipsImage *in, VipsImage **out, - const double *c, int n, va_list ap ) + double *c, int n, va_list ap ) { VipsArea *area_c; double *array; @@ -379,8 +379,7 @@ vips_remainder_constv( VipsImage *in, VipsImage **out, * Returns: 0 on success, -1 on error */ int -vips_remainder_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +vips_remainder_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; diff --git a/libvips/include/vips/arithmetic.h b/libvips/include/vips/arithmetic.h index 3c9c7aa9..ce95399a 100644 --- a/libvips/include/vips/arithmetic.h +++ b/libvips/include/vips/arithmetic.h @@ -185,14 +185,14 @@ int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_linear( VipsImage *in, VipsImage **out, - const double *a, const double *b, int n, ... ) + double *a, double *b, int n, ... ) __attribute__((sentinel)); int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) __attribute__((sentinel)); int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_remainder_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) + double *c, int n, ... ) __attribute__((sentinel)); int vips_remainder_const1( VipsImage *in, VipsImage **out, double c, ... ) @@ -279,25 +279,19 @@ int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_relational_const( VipsImage *in, VipsImage **out, - VipsOperationRelational relational, const double *c, int n, ... ) + VipsOperationRelational relational, double *c, int n, ... ) __attribute__((sentinel)); -int vips_equal_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_notequal_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_less_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_lesseq_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_more_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_moreeq_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_relational_const1( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double c, ... ) @@ -330,22 +324,17 @@ int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_boolean_const( VipsImage *in, VipsImage **out, - VipsOperationBoolean boolean, const double *c, int n, ... ) + VipsOperationBoolean boolean, double *c, int n, ... ) __attribute__((sentinel)); -int vips_andimage_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_orimage_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_eorimage_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_lshift_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_rshift_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_boolean_const1( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double c, ... ) @@ -369,13 +358,11 @@ int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_math2_const( VipsImage *in, VipsImage **out, - VipsOperationMath2 math2, const double *c, int n, ... ) + VipsOperationMath2 math2, double *c, int n, ... ) __attribute__((sentinel)); -int vips_pow_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); -int vips_wop_const( VipsImage *in, VipsImage **out, - const double *c, int n, ... ) +int vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_math2_const1( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double c, ... ) From b3a7929247fbac033771685fe5102cbda632f8c2 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 5 Mar 2020 15:02:16 +0000 Subject: [PATCH 3/3] detect read errors in sniff correctly we has a signed/unsigned mixup :( --- ChangeLog | 1 + libvips/iofuncs/source.c | 6 +++--- libvips/iofuncs/util.c | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9575253c..08cfbe09 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ - better gifload behaviour for DISPOSAL_UNSPECIFIED [DarthSim] - ban ppm max_value < 0 - add fuzz corpus to dist +- detect read errors correctly in source_sniff 20/6/19 started 8.9.1 - don't use the new source loaders for new_from_file or new_from_buffer, it diff --git a/libvips/iofuncs/source.c b/libvips/iofuncs/source.c index 3c286007..994caa9e 100644 --- a/libvips/iofuncs/source.c +++ b/libvips/iofuncs/source.c @@ -1153,7 +1153,7 @@ vips_source_length( VipsSource *source ) } /** - * vips_source_peek: + * vips_source_sniff_at_most: * @source: peek this source * @data: return a pointer to the bytes read here * @length: max number of bytes to read @@ -1219,13 +1219,13 @@ unsigned char * vips_source_sniff( VipsSource *source, size_t length ) { unsigned char *data; - size_t bytes_read; + gint64 bytes_read; if( vips_source_test_features( source ) ) return( NULL ); bytes_read = vips_source_sniff_at_most( source, &data, length ); - if( bytes_read < length ) + if( bytes_read < (gint64) length ) return( NULL ); return( data ); diff --git a/libvips/iofuncs/util.c b/libvips/iofuncs/util.c index 48001ed6..09ef6757 100644 --- a/libvips/iofuncs/util.c +++ b/libvips/iofuncs/util.c @@ -1036,6 +1036,10 @@ vips__seek_no_error( int fd, gint64 pos, int whence ) #ifdef OS_WIN32 new_pos = _lseeki64( fd, pos, whence ); #else /*!OS_WIN32*/ + /* On error, eg. opening a directory and seeking to the end, lseek() + * on linux seems to return 9223372036854775807 ((1 << 63) - 1) + * rather than (off_t) -1 for reasons I don't understand. + */ new_pos = lseek( fd, pos, whence ); #endif /*OS_WIN32*/