Skip to content

Commit a21d16c

Browse files
committed
merge revision(s) 44572,44578,44591,44592: [Backport ruby#9490]
ext: use rb_sprintf() and rb_vsprintf() with PRIsVALUE git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@44903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 783bcda commit a21d16c

9 files changed

Lines changed: 58 additions & 69 deletions

File tree

ext/dl/cptr.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -391,9 +391,8 @@ rb_dlptr_inspect(VALUE self)
391391
char str[1024];
392392

393393
TypedData_Get_Struct(self, struct ptr_data, &dlptr_data_type, data);
394-
snprintf(str, 1023, "#<%s:%p ptr=%p size=%ld free=%p>",
395-
rb_class2name(CLASS_OF(self)), data, data->ptr, data->size, data->free);
396-
return rb_str_new2(str);
394+
return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
395+
rb_obj_class(self), data, data->ptr, data->size, data->free);
397396
}
398397

399398
/*

ext/fiddle/pointer.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,12 +427,10 @@ static VALUE
427427
rb_fiddle_ptr_inspect(VALUE self)
428428
{
429429
struct ptr_data *data;
430-
char str[1024];
431430

432431
TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
433-
snprintf(str, 1023, "#<%s:%p ptr=%p size=%ld free=%p>",
434-
rb_class2name(CLASS_OF(self)), data, data->ptr, data->size, data->free);
435-
return rb_str_new2(str);
432+
return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
433+
rb_obj_class(self), data, data->ptr, data->size, data->free);
436434
}
437435

438436
/*

ext/openssl/ossl.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -293,25 +293,29 @@ ossl_to_der_if_possible(VALUE obj)
293293
static VALUE
294294
ossl_make_error(VALUE exc, const char *fmt, va_list args)
295295
{
296-
char buf[BUFSIZ];
296+
VALUE str = Qnil;
297297
const char *msg;
298298
long e;
299-
int len = 0;
300299

301300
#ifdef HAVE_ERR_PEEK_LAST_ERROR
302301
e = ERR_peek_last_error();
303302
#else
304303
e = ERR_peek_error();
305304
#endif
306305
if (fmt) {
307-
len = vsnprintf(buf, BUFSIZ, fmt, args);
306+
str = rb_vsprintf(fmt, args);
308307
}
309-
if (len < BUFSIZ && e) {
308+
if (e) {
310309
if (dOSSL == Qtrue) /* FULL INFO */
311310
msg = ERR_error_string(e, NULL);
312311
else
313312
msg = ERR_reason_error_string(e);
314-
len += snprintf(buf+len, BUFSIZ-len, "%s%s", (len ? ": " : ""), msg);
313+
if (NIL_P(str)) {
314+
str = rb_str_new_cstr(msg);
315+
}
316+
else {
317+
rb_str_cat2(rb_str_cat2(str, ": "), msg);
318+
}
315319
}
316320
if (dOSSL == Qtrue){ /* show all errors on the stack */
317321
while ((e = ERR_get_error()) != 0){
@@ -320,8 +324,8 @@ ossl_make_error(VALUE exc, const char *fmt, va_list args)
320324
}
321325
ERR_clear_error();
322326

323-
if(len > BUFSIZ) len = rb_long2int(strlen(buf));
324-
return rb_exc_new(exc, buf, len);
327+
if (NIL_P(str)) str = rb_str_new(0, 0);
328+
return rb_exc_new3(exc, str);
325329
}
326330

327331
void

ext/pty/pty.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ static void
613613
raise_from_check(rb_pid_t pid, int status)
614614
{
615615
const char *state;
616-
char buf[1024];
616+
VALUE msg;
617617
VALUE exc;
618618

619619
#if defined(WIFSTOPPED)
@@ -631,8 +631,8 @@ raise_from_check(rb_pid_t pid, int status)
631631
else {
632632
state = "exited";
633633
}
634-
snprintf(buf, sizeof(buf), "pty - %s: %ld", state, (long)pid);
635-
exc = rb_exc_new2(eChildExited, buf);
634+
msg = rb_sprintf("pty - %s: %ld", state, (long)pid);
635+
exc = rb_exc_new_str(eChildExited, msg);
636636
rb_iv_set(exc, "status", rb_last_status_get());
637637
rb_exc_raise(exc);
638638
}

ext/strscan/strscan.c

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,76 +1155,69 @@ static VALUE
11551155
strscan_inspect(VALUE self)
11561156
{
11571157
struct strscanner *p;
1158-
char buf[BUFSIZE];
1159-
long len;
11601158
VALUE a, b;
11611159

11621160
p = check_strscan(self);
11631161
if (NIL_P(p->str)) {
1164-
len = snprintf(buf, BUFSIZE, "#<%s (uninitialized)>",
1165-
rb_class2name(CLASS_OF(self)));
1166-
return infect(rb_str_new(buf, len), p);
1162+
a = rb_sprintf("#<%"PRIsVALUE" (uninitialized)>", rb_obj_class(self));
1163+
return infect(a, p);
11671164
}
11681165
if (EOS_P(p)) {
1169-
len = snprintf(buf, BUFSIZE, "#<%s fin>",
1170-
rb_class2name(CLASS_OF(self)));
1171-
return infect(rb_str_new(buf, len), p);
1166+
a = rb_sprintf("#<%"PRIsVALUE" fin>", rb_obj_class(self));
1167+
return infect(a, p);
11721168
}
11731169
if (p->curr == 0) {
1174-
b = inspect2(p);
1175-
len = snprintf(buf, BUFSIZE, "#<%s %ld/%ld @ %s>",
1176-
rb_class2name(CLASS_OF(self)),
1177-
p->curr, S_LEN(p),
1178-
RSTRING_PTR(b));
1179-
return infect(rb_str_new(buf, len), p);
1170+
b = inspect2(p);
1171+
a = rb_sprintf("#<%"PRIsVALUE" %ld/%ld @ %"PRIsVALUE">",
1172+
rb_obj_class(self),
1173+
p->curr, S_LEN(p),
1174+
b);
1175+
return infect(a, p);
11801176
}
11811177
a = inspect1(p);
11821178
b = inspect2(p);
1183-
len = snprintf(buf, BUFSIZE, "#<%s %ld/%ld %s @ %s>",
1184-
rb_class2name(CLASS_OF(self)),
1185-
p->curr, S_LEN(p),
1186-
RSTRING_PTR(a),
1187-
RSTRING_PTR(b));
1188-
return infect(rb_str_new(buf, len), p);
1179+
a = rb_sprintf("#<%"PRIsVALUE" %ld/%ld %"PRIsVALUE" @ %"PRIsVALUE">",
1180+
rb_obj_class(self),
1181+
p->curr, S_LEN(p),
1182+
a, b);
1183+
return infect(a, p);
11891184
}
11901185

11911186
static VALUE
11921187
inspect1(struct strscanner *p)
11931188
{
1194-
char buf[BUFSIZE];
1195-
char *bp = buf;
1189+
VALUE str;
11961190
long len;
11971191

11981192
if (p->curr == 0) return rb_str_new2("");
11991193
if (p->curr > INSPECT_LENGTH) {
1200-
strcpy(bp, "..."); bp += 3;
1201-
len = INSPECT_LENGTH;
1194+
str = rb_str_new_cstr("...");
1195+
len = INSPECT_LENGTH;
12021196
}
12031197
else {
1204-
len = p->curr;
1198+
str = rb_str_new(0, 0);
1199+
len = p->curr;
12051200
}
1206-
memcpy(bp, CURPTR(p) - len, len); bp += len;
1207-
return rb_str_dump(rb_str_new(buf, bp - buf));
1201+
rb_str_cat(str, CURPTR(p) - len, len);
1202+
return rb_str_dump(str);
12081203
}
12091204

12101205
static VALUE
12111206
inspect2(struct strscanner *p)
12121207
{
1213-
char buf[BUFSIZE];
1214-
char *bp = buf;
1208+
VALUE str;
12151209
long len;
12161210

12171211
if (EOS_P(p)) return rb_str_new2("");
12181212
len = S_LEN(p) - p->curr;
12191213
if (len > INSPECT_LENGTH) {
1220-
len = INSPECT_LENGTH;
1221-
memcpy(bp, CURPTR(p), len); bp += len;
1222-
strcpy(bp, "..."); bp += 3;
1214+
str = rb_str_new(CURPTR(p), INSPECT_LENGTH);
1215+
rb_str_cat2(str, "...");
12231216
}
12241217
else {
1225-
memcpy(bp, CURPTR(p), len); bp += len;
1218+
str = rb_str_new(CURPTR(p), len);
12261219
}
1227-
return rb_str_dump(rb_str_new(buf, bp - buf));
1220+
return rb_str_dump(str);
12281221
}
12291222

12301223
/* =======================================================================

ext/tk/tcltklib.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -848,15 +848,14 @@ create_ip_exc(interp, exc, fmt, va_alist)
848848
#endif
849849
{
850850
va_list args;
851-
char buf[BUFSIZ];
851+
VALUE msg;
852852
VALUE einfo;
853853
struct tcltkip *ptr = get_ip(interp);
854854

855855
va_init_list(args,fmt);
856-
vsnprintf(buf, BUFSIZ, fmt, args);
857-
buf[BUFSIZ - 1] = '\0';
856+
msg = rb_vsprintf(fmt, args);
858857
va_end(args);
859-
einfo = rb_exc_new2(exc, buf);
858+
einfo = rb_exc_new_str(exc, msg);
860859
rb_ivar_set(einfo, ID_at_interp, interp);
861860
if (ptr) {
862861
Tcl_ResetResult(ptr->ip);

ext/win32ole/win32ole.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,19 +1209,18 @@ static void
12091209
ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...)
12101210
{
12111211
va_list args;
1212-
char buf[BUFSIZ];
1212+
VALUE msg;
12131213
VALUE err_msg;
12141214
va_init_list(args, fmt);
1215-
vsnprintf(buf, BUFSIZ, fmt, args);
1215+
msg = rb_vsprintf(fmt, args);
12161216
va_end(args);
12171217

12181218
err_msg = ole_hresult2msg(hr);
12191219
if(err_msg != Qnil) {
1220-
rb_raise(ecs, "%s\n%s", buf, StringValuePtr(err_msg));
1221-
}
1222-
else {
1223-
rb_raise(ecs, "%s", buf);
1220+
rb_str_cat2(msg, "\n");
1221+
rb_str_append(msg, err_msg);
12241222
}
1223+
rb_exc_raise(rb_exc_new_str(ecs, msg));
12251224
}
12261225

12271226
void

ext/zlib/zlib.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -337,11 +337,8 @@ raise_zlib_error(int err, const char *msg)
337337
rb_sys_fail(msg);
338338
/* no return */
339339
default:
340-
{
341-
char buf[BUFSIZ];
342-
snprintf(buf, BUFSIZ, "unknown zlib error %d: %s", err, msg);
343-
exc = rb_exc_new2(cZError, buf);
344-
}
340+
exc = rb_exc_new_str(cZError,
341+
rb_sprintf("unknown zlib error %d: %s", err, msg));
345342
}
346343

347344
rb_exc_raise(exc);

version.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#define RUBY_VERSION "2.1.1"
2-
#define RUBY_RELEASE_DATE "2014-02-07"
3-
#define RUBY_PATCHLEVEL 28
2+
#define RUBY_RELEASE_DATE "2014-02-10"
3+
#define RUBY_PATCHLEVEL 29
44

55
#define RUBY_RELEASE_YEAR 2014
66
#define RUBY_RELEASE_MONTH 2
7-
#define RUBY_RELEASE_DAY 7
7+
#define RUBY_RELEASE_DAY 10
88

99
#include "ruby/version.h"
1010

0 commit comments

Comments
 (0)