From 63f64c50559b1b0d99dd944a7b4d66b2ce1b42b3 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Thu, 8 Jul 2021 16:12:43 -0700 Subject: [PATCH 1/2] cplusplus: fix for loop sizes Array indeces are pointers and should use pointer sizes. Signed-off-by: Rosen Penev --- cplusplus/VImage.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/cplusplus/VImage.cpp b/cplusplus/VImage.cpp index 01e1a6f3..a40e7418 100644 --- a/cplusplus/VImage.cpp +++ b/cplusplus/VImage.cpp @@ -64,7 +64,7 @@ to_vectorv( int n, ... ) va_list ap; va_start( ap, n ); - for( int i = 0; i < n; i++ ) + for( std::vector::size_type i = 0; i < size_t(n); i++ ) vector[i] = va_arg( ap, double ); va_end( ap ); @@ -82,7 +82,7 @@ to_vector( int n, double array[] ) { std::vector vector( n ); - for( int i = 0; i < n; i++ ) + for( std::vector::size_type i = 0; i < size_t(n); i++ ) vector[i] = array[i]; return( vector ); @@ -93,7 +93,7 @@ negate( std::vector vector ) { std::vector new_vector( vector.size() ); - for( unsigned int i = 0; i < vector.size(); i++ ) + for( std::vector::size_type i = 0; i < vector.size(); i++ ) new_vector[i] = vector[i] * -1; return( new_vector ); @@ -104,7 +104,7 @@ invert( std::vector vector ) { std::vector new_vector( vector.size() ); - for( unsigned int i = 0; i < vector.size(); i++ ) + for( std::vector::size_type i = 0; i < vector.size(); i++ ) new_vector[i] = 1.0 / vector[i]; return( new_vector ); @@ -210,7 +210,6 @@ VOption::set( const char *name, std::vector value ) Pair *pair = new Pair( name ); int *array; - unsigned int i; pair->input = true; @@ -219,7 +218,7 @@ VOption::set( const char *name, std::vector value ) static_cast< int >( value.size() ) ); array = vips_value_get_array_int( &pair->value, NULL ); - for( i = 0; i < value.size(); i++ ) + for( std::vector::size_type i = 0; i < value.size(); i++ ) array[i] = value[i]; options.push_back( pair ); @@ -234,7 +233,6 @@ VOption::set( const char *name, std::vector value ) Pair *pair = new Pair( name ); double *array; - unsigned int i; pair->input = true; @@ -243,7 +241,7 @@ VOption::set( const char *name, std::vector value ) static_cast< int >( value.size() ) ); array = vips_value_get_array_double( &pair->value, NULL ); - for( i = 0; i < value.size(); i++ ) + for( std::vector::size_type i = 0; i < value.size(); i++ ) array[i] = value[i]; options.push_back( pair ); @@ -258,7 +256,6 @@ VOption::set( const char *name, std::vector value ) Pair *pair = new Pair( name ); VipsImage **array; - unsigned int i; pair->input = true; @@ -267,7 +264,7 @@ VOption::set( const char *name, std::vector value ) static_cast< int >( value.size() ) ); array = vips_value_get_array_image( &pair->value, NULL ); - for( i = 0; i < value.size(); i++ ) { + for( std::vector::size_type i = 0; i < value.size(); i++ ) { VipsImage *vips_image = value[i].get_image(); array[i] = vips_image; @@ -488,10 +485,8 @@ VOption::get_operation( VipsOperation *operation ) double *array = vips_value_get_array_double( value, &length ); - int j; - ((*i)->vvector)->resize( length ); - for( j = 0; j < length; j++ ) + for( size_t j = 0; j < length; j++ ) (*((*i)->vvector))[j] = array[j]; } else if( type == VIPS_TYPE_BLOB ) { From fde53df4dac767cba785b032a63e9f66bc809b2f Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Thu, 8 Jul 2021 16:27:13 -0700 Subject: [PATCH 2/2] use reserve instead of constructor The constructor 0 initializes. reserve does not. Signed-off-by: Rosen Penev --- cplusplus/VImage.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cplusplus/VImage.cpp b/cplusplus/VImage.cpp index a40e7418..679b77b8 100644 --- a/cplusplus/VImage.cpp +++ b/cplusplus/VImage.cpp @@ -60,7 +60,8 @@ VIPS_NAMESPACE_START std::vector to_vectorv( int n, ... ) { - std::vector vector( n ); + std::vector vector; + vector.reserve( n ); va_list ap; va_start( ap, n ); @@ -80,7 +81,8 @@ to_vector( double value ) std::vector to_vector( int n, double array[] ) { - std::vector vector( n ); + std::vector vector; + vector.reserve( n ); for( std::vector::size_type i = 0; i < size_t(n); i++ ) vector[i] = array[i]; @@ -91,7 +93,8 @@ to_vector( int n, double array[] ) std::vector negate( std::vector vector ) { - std::vector new_vector( vector.size() ); + std::vector new_vector; + new_vector.reserve( vector.size() ); for( std::vector::size_type i = 0; i < vector.size(); i++ ) new_vector[i] = vector[i] * -1; @@ -102,7 +105,8 @@ negate( std::vector vector ) std::vector invert( std::vector vector ) { - std::vector new_vector( vector.size() ); + std::vector new_vector; + new_vector.reserve( vector.size() ); for( std::vector::size_type i = 0; i < vector.size(); i++ ) new_vector[i] = 1.0 / vector[i];