fix a segv with old-style interpolate CLI args

thanks Nicolas
This commit is contained in:
John Cupitt 2012-01-01 21:54:30 +00:00
parent dce5e3483d
commit 9fc55c3011
3 changed files with 8 additions and 17 deletions

13
TODO
View File

@ -2,25 +2,12 @@
- try:
$ vips im_affinei original.png vipsnohalo.png nohalo 4 0 0 4 1.5 1.5 0 0 1600 1200
Segmentation fault
in master
- look at libpeas for plugin support
http://live.gnome.org/Libpeas
- foreign docs come up as "VipsForeignSave", annoying, why?
- we can no longer have round brackets in filenames, argh

View File

@ -870,10 +870,13 @@ im_type_desc im__output_gvalue = {
static int
input_interpolate_init( im_object *obj, char *str )
{
VipsObjectClass *interpolate_class;
GType type = g_type_from_name( "VipsInterpolate" );
VipsObjectClass *interpolate_class =
VIPS_INTERPOLATE_CLASS( g_type_class_ref( type ) );
VipsObject *object;
interpolate_class = vips_class_find( "VipsInterpolate", "interpolate" );
g_assert( interpolate_class );
if( !(object = vips_object_new_from_string( interpolate_class, str )) )
return( -1 );
if( vips_object_build( object ) ) {

View File

@ -1680,6 +1680,7 @@ vips_object_new_from_string( VipsObjectClass *object_class, const char *p )
VipsObject *object;
VipsToken token;
g_assert( object_class );
g_assert( object_class->new_from_string );
/* The first string in p is the main construct arg, eg. a filename.
@ -1893,14 +1894,14 @@ vips_type_map_all( GType base, VipsTypeMapFn fn, void *a )
/**
* vips_class_map_all: (skip)
*
* Loop over all the subclasses of a base type. Non-abtract classes only.
* Loop over all the subclasses of a base type. Non-abstract classes only.
*/
void *
vips_class_map_all( GType type, VipsClassMapFn fn, void *a )
{
void *result;
/* We can't instantiate abstract classes.
/* Avoid abstract classes. Use type_map_all for them.
*/
if( !G_TYPE_IS_ABSTRACT( type ) ) {
/* We never unref this ref, but we never unload classes