Method: Magick::Image#marshal_dump
- Defined in:
- ext/RMagick/rmimage.cpp
#marshal_dump ⇒ Array<String>
Support Marshal.dump.
9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 |
# File 'ext/RMagick/rmimage.cpp', line 9017
VALUE
Image_marshal_dump(VALUE self)
{
Image *image;
Info *info;
unsigned char *blob;
size_t length;
VALUE ary;
ExceptionInfo *exception;
image = rm_check_destroyed(self);
info = CloneImageInfo(NULL);
if (!info)
{
rb_raise(rb_eNoMemError, "not enough memory to initialize Info object");
}
ary = rb_ary_new2(2);
rb_ary_store(ary, 0, rb_str_new2(image->filename));
exception = AcquireExceptionInfo();
GVL_STRUCT_TYPE(ImageToBlob) args = { info, image, &length, exception };
blob = (unsigned char *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ImageToBlob), &args);
// Destroy info before raising an exception
DestroyImageInfo(info);
CHECK_EXCEPTION();
DestroyExceptionInfo(exception);
rb_ary_store(ary, 1, rb_str_new((char *)blob, (long)length));
magick_free((void*)blob);
return ary;
}
|