ext/RMagick/rmkinfo.c in rmagick-4.0.0 vs ext/RMagick/rmkinfo.c in rmagick-4.1.0.rc1

- old
+ new

@@ -51,14 +51,30 @@ */ VALUE KernelInfo_initialize(VALUE self, VALUE kernel_string) { KernelInfo *kernel; +#if defined(IMAGEMAGICK_7) + ExceptionInfo *exception; +#endif Check_Type(kernel_string, T_STRING); +#if defined(IMAGEMAGICK_7) + exception = AcquireExceptionInfo(); + kernel = AcquireKernelInfo(StringValueCStr(kernel_string), exception); + if (rm_should_raise_exception(exception, DestroyExceptionRetention)) + { + if (kernel != (KernelInfo *) NULL) + { + (void) DestroyKernelInfo(kernel); + } + rm_raise_exception(exception); + } +#else kernel = AcquireKernelInfo(StringValueCStr(kernel_string)); +#endif if (!kernel) { rb_raise(rb_eRuntimeError, "failed to parse kernel string"); } @@ -214,15 +230,31 @@ KernelInfo_builtin(VALUE self, VALUE what, VALUE geometry) { KernelInfo *kernel; KernelInfoType kernel_type; GeometryInfo info; +#if defined(IMAGEMAGICK_7) + ExceptionInfo *exception; +#endif Check_Type(geometry, T_STRING); VALUE_TO_ENUM(what, kernel_type, KernelInfoType); ParseGeometry(StringValueCStr(geometry), &info); +#if defined(IMAGEMAGICK_7) + exception = AcquireExceptionInfo(); + kernel = AcquireKernelBuiltIn(kernel_type, &info, exception); + if (rm_should_raise_exception(exception, DestroyExceptionRetention)) + { + if (kernel != (KernelInfo *) NULL) + { + (void) DestroyKernelInfo(kernel); + } + rm_raise_exception(exception); + } +#else kernel = AcquireKernelBuiltIn(kernel_type, &info); +#endif if (!kernel) { rb_raise(rb_eRuntimeError, "failed to acquire builtin kernel"); }