ruby-gpgme 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/gpgme_n.c +25 -0
  2. metadata +2 -2
data/gpgme_n.c CHANGED
@@ -220,6 +220,11 @@ rb_s_gpgme_data_new (VALUE dummy, VALUE rdh)
220
220
  gpgme_data_t dh;
221
221
  gpgme_error_t err = gpgme_data_new (&dh);
222
222
 
223
+ if (gpgme_err_code(err) == GPG_ERR_ENOMEM)
224
+ {
225
+ rb_gc ();
226
+ err = gpgme_data_new (&dh);
227
+ }
223
228
  if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
224
229
  rb_ary_store (rdh, 0, WRAP_GPGME_DATA(dh));
225
230
  return LONG2NUM(err);
@@ -238,6 +243,11 @@ rb_s_gpgme_data_new_from_mem (VALUE dummy, VALUE rdh, VALUE vbuffer,
238
243
  rb_raise (rb_eArgError, "argument out of range");
239
244
 
240
245
  err = gpgme_data_new_from_mem (&dh, StringValuePtr(vbuffer), size, 1);
246
+ if (gpgme_err_code(err) == GPG_ERR_ENOMEM)
247
+ {
248
+ rb_gc ();
249
+ err = gpgme_data_new_from_mem (&dh, StringValuePtr(vbuffer), size, 1);
250
+ }
241
251
  if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
242
252
  {
243
253
  vdh = WRAP_GPGME_DATA(dh);
@@ -251,6 +261,11 @@ rb_s_gpgme_data_new_from_fd (VALUE dummy, VALUE rdh, VALUE vfd)
251
261
  {
252
262
  gpgme_data_t dh;
253
263
  gpgme_error_t err = gpgme_data_new_from_fd (&dh, NUM2INT(vfd));
264
+ if (gpgme_err_code(err) == GPG_ERR_ENOMEM)
265
+ {
266
+ rb_gc ();
267
+ err = gpgme_data_new_from_fd (&dh, NUM2INT(vfd));
268
+ }
254
269
  if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
255
270
  rb_ary_store (rdh, 0, WRAP_GPGME_DATA(dh));
256
271
  return LONG2NUM(err);
@@ -325,6 +340,11 @@ rb_s_gpgme_data_new_from_cbs (VALUE dummy, VALUE rdh, VALUE vcbs,
325
340
  rb_ary_push (vcbs_handle, vhandle);
326
341
 
327
342
  err = gpgme_data_new_from_cbs (&dh, &cbs, (void*)vcbs_handle);
343
+ if (gpgme_err_code(err) == GPG_ERR_ENOMEM)
344
+ {
345
+ rb_gc ();
346
+ err = gpgme_data_new_from_cbs (&dh, &cbs, (void*)vcbs_handle);
347
+ }
328
348
  if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
329
349
  {
330
350
  VALUE vdh = WRAP_GPGME_DATA(dh);
@@ -409,6 +429,11 @@ rb_s_gpgme_new (VALUE dummy, VALUE rctx)
409
429
  gpgme_ctx_t ctx;
410
430
  gpgme_error_t err = gpgme_new (&ctx);
411
431
 
432
+ if (gpgme_err_code(err) == GPG_ERR_ENOMEM)
433
+ {
434
+ rb_gc ();
435
+ err = gpgme_new (&ctx);
436
+ }
412
437
  if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
413
438
  rb_ary_store (rctx, 0, WRAP_GPGME_CTX(ctx));
414
439
  return LONG2NUM(err);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-gpgme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daiki Ueno
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-19 00:00:00 +09:00
12
+ date: 2009-02-09 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15