fix a segv with old-style interpolate CLI args
thanks Nicolas
This commit is contained in:
parent
dce5e3483d
commit
9fc55c3011
13
TODO
13
TODO
@ -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
|
- look at libpeas for plugin support
|
||||||
|
|
||||||
http://live.gnome.org/Libpeas
|
http://live.gnome.org/Libpeas
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- foreign docs come up as "VipsForeignSave", annoying, why?
|
- foreign docs come up as "VipsForeignSave", annoying, why?
|
||||||
|
|
||||||
- we can no longer have round brackets in filenames, argh
|
- we can no longer have round brackets in filenames, argh
|
||||||
|
@ -870,10 +870,13 @@ im_type_desc im__output_gvalue = {
|
|||||||
static int
|
static int
|
||||||
input_interpolate_init( im_object *obj, char *str )
|
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;
|
VipsObject *object;
|
||||||
|
|
||||||
interpolate_class = vips_class_find( "VipsInterpolate", "interpolate" );
|
g_assert( interpolate_class );
|
||||||
|
|
||||||
if( !(object = vips_object_new_from_string( interpolate_class, str )) )
|
if( !(object = vips_object_new_from_string( interpolate_class, str )) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
if( vips_object_build( object ) ) {
|
if( vips_object_build( object ) ) {
|
||||||
|
@ -1680,6 +1680,7 @@ vips_object_new_from_string( VipsObjectClass *object_class, const char *p )
|
|||||||
VipsObject *object;
|
VipsObject *object;
|
||||||
VipsToken token;
|
VipsToken token;
|
||||||
|
|
||||||
|
g_assert( object_class );
|
||||||
g_assert( object_class->new_from_string );
|
g_assert( object_class->new_from_string );
|
||||||
|
|
||||||
/* The first string in p is the main construct arg, eg. a filename.
|
/* 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)
|
* 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 *
|
void *
|
||||||
vips_class_map_all( GType type, VipsClassMapFn fn, void *a )
|
vips_class_map_all( GType type, VipsClassMapFn fn, void *a )
|
||||||
{
|
{
|
||||||
void *result;
|
void *result;
|
||||||
|
|
||||||
/* We can't instantiate abstract classes.
|
/* Avoid abstract classes. Use type_map_all for them.
|
||||||
*/
|
*/
|
||||||
if( !G_TYPE_IS_ABSTRACT( type ) ) {
|
if( !G_TYPE_IS_ABSTRACT( type ) ) {
|
||||||
/* We never unref this ref, but we never unload classes
|
/* We never unref this ref, but we never unload classes
|
||||||
|
Loading…
Reference in New Issue
Block a user