mirror of
https://github.com/ruby/ruby.git
synced 2025-09-18 01:54:00 +02:00
merge revision(s) 44569:44572,44576:44579,44581,44590:44594,44607,44608,44614,44615:
iseq.c: linear search * iseq.c (iseq_type_from_id): linear search instead of hash lookup for small fixed number keys. ------------------------------------------------------------------------ r44570 | nobu | 2014-01-12 17:11:32 +0900 (Sun, 12 Jan 2014) | 4 lines tcltklib.c: create_ip_exc format argument * ext/tk/tcltklib.c (create_ip_exc): format argument must not be a dynamic string, not to contain unescaped %. ------------------------------------------------------------------------ r44571 | nobu | 2014-01-12 17:11:34 +0900 (Sun, 12 Jan 2014) | 5 lines stubs.c: library name strings * ext/tk/stubs.c (ruby_open_tcl_dll, ruby_open_tk_dll): make library names by string literal concatenation at compilation time, not by sprintf() at runtime. ------------------------------------------------------------------------ r44572 | nobu | 2014-01-12 17:11:36 +0900 (Sun, 12 Jan 2014) | 1 line ext: use rb_sprintf() and rb_vsprintf() with PRIsVALUE * ext/bigdecimal/bigdecimal.c (CLASS_NAME): macro to wrap depending on PRIsVALUE for 1.9. [Backport #9406] * ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback definition for 2.1 or older. [ruby-core:59750] [Backport #9406] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@44659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b809254c8c
commit
8302aa5f95
22 changed files with 156 additions and 147 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Mon Jan 20 01:02:18 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/bigdecimal/bigdecimal.c (CLASS_NAME): macro to wrap
|
||||||
|
depending on PRIsVALUE for 1.9. [Backport #9406]
|
||||||
|
|
||||||
|
* ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback
|
||||||
|
definition for 2.1 or older. [ruby-core:59750] [Backport #9406]
|
||||||
|
|
||||||
Sun Jan 12 22:46:49 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
|
Sun Jan 12 22:46:49 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
|
||||||
|
|
||||||
patch inspired from r44260 on trunk. [ruby-core:58652] [Bug #9168]
|
patch inspired from r44260 on trunk. [ruby-core:58652] [Bug #9168]
|
||||||
|
|
|
@ -102,6 +102,20 @@ bigzero_p(VALUE x)
|
||||||
# define RRATIONAL_NEGATIVE_P(x) RTEST(rb_funcall((x), '<', 1, INT2FIX(0)))
|
# define RRATIONAL_NEGATIVE_P(x) RTEST(rb_funcall((x), '<', 1, INT2FIX(0)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DECIMAL_SIZE_OF_BITS
|
||||||
|
#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999)
|
||||||
|
/* an approximation of ceil(n * log10(2)), upto 65536 at least */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PRIsVALUE
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) (obj)
|
||||||
|
#else
|
||||||
|
# define PRIsVALUE "s"
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) StringValueCStr(obj)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ================== Ruby Interface part ==========================
|
* ================== Ruby Interface part ==========================
|
||||||
*/
|
*/
|
||||||
|
@ -262,8 +276,8 @@ SomeOneMayDoIt:
|
||||||
unable_to_coerce_without_prec:
|
unable_to_coerce_without_prec:
|
||||||
if (must) {
|
if (must) {
|
||||||
rb_raise(rb_eArgError,
|
rb_raise(rb_eArgError,
|
||||||
"%s can't be coerced into BigDecimal without a precision",
|
"%"PRIsVALUE" can't be coerced into BigDecimal without a precision",
|
||||||
rb_obj_classname(v));
|
RB_OBJ_CLASSNAME(v));
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -2195,8 +2209,8 @@ retry:
|
||||||
/* fall through */
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
rb_raise(rb_eTypeError,
|
rb_raise(rb_eTypeError,
|
||||||
"wrong argument type %s (expected scalar Numeric)",
|
"wrong argument type %"PRIsVALUE" (expected scalar Numeric)",
|
||||||
rb_obj_classname(vexp));
|
RB_OBJ_CLASSNAME(vexp));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (VpIsZero(x)) {
|
if (VpIsZero(x)) {
|
||||||
|
@ -2451,8 +2465,8 @@ BigDecimal_new(int argc, VALUE *argv)
|
||||||
case T_RATIONAL:
|
case T_RATIONAL:
|
||||||
if (NIL_P(nFig)) {
|
if (NIL_P(nFig)) {
|
||||||
rb_raise(rb_eArgError,
|
rb_raise(rb_eArgError,
|
||||||
"can't omit precision for a %s.",
|
"can't omit precision for a %"PRIsVALUE".",
|
||||||
rb_class2name(CLASS_OF(iniValue)));
|
RB_OBJ_CLASSNAME(iniValue));
|
||||||
}
|
}
|
||||||
return GetVpValueWithPrec(iniValue, mf, 1);
|
return GetVpValueWithPrec(iniValue, mf, 1);
|
||||||
|
|
||||||
|
|
|
@ -391,12 +391,10 @@ static VALUE
|
||||||
rb_dlptr_inspect(VALUE self)
|
rb_dlptr_inspect(VALUE self)
|
||||||
{
|
{
|
||||||
struct ptr_data *data;
|
struct ptr_data *data;
|
||||||
char str[1024];
|
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ptr_data, &dlptr_data_type, data);
|
TypedData_Get_Struct(self, struct ptr_data, &dlptr_data_type, data);
|
||||||
snprintf(str, 1023, "#<%s:%p ptr=%p size=%ld free=%p>",
|
return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
|
||||||
rb_class2name(CLASS_OF(self)), data, data->ptr, data->size, data->free);
|
rb_obj_class(self), data, data->ptr, data->size, data->free);
|
||||||
return rb_str_new2(str);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
#include <fiddle.h>
|
#include <fiddle.h>
|
||||||
|
|
||||||
|
#ifdef PRIsVALUE
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) (obj)
|
||||||
|
#else
|
||||||
|
# define PRIsVALUE "s"
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) StringValueCStr(obj)
|
||||||
|
#endif
|
||||||
|
|
||||||
VALUE cFiddleFunction;
|
VALUE cFiddleFunction;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -53,12 +62,13 @@ rb_fiddle_new_function(VALUE address, VALUE arg_types, VALUE ret_type)
|
||||||
static int
|
static int
|
||||||
parse_keyword_arg_i(VALUE key, VALUE value, VALUE self)
|
parse_keyword_arg_i(VALUE key, VALUE value, VALUE self)
|
||||||
{
|
{
|
||||||
if (key == ID2SYM(rb_intern("name"))) {
|
if (key == ID2SYM(rb_intern("name"))) {
|
||||||
rb_iv_set(self, "@name", value);
|
rb_iv_set(self, "@name", value);
|
||||||
} else {
|
} else {
|
||||||
rb_raise(rb_eArgError, "unknown keyword: %"PRIsVALUE, key);
|
rb_raise(rb_eArgError, "unknown keyword: %"PRIsVALUE,
|
||||||
}
|
RB_OBJ_STRING(key));
|
||||||
return ST_CONTINUE;
|
}
|
||||||
|
return ST_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
|
@ -7,6 +7,15 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <fiddle.h>
|
#include <fiddle.h>
|
||||||
|
|
||||||
|
#ifdef PRIsVALUE
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) (obj)
|
||||||
|
#else
|
||||||
|
# define PRIsVALUE "s"
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) StringValueCStr(obj)
|
||||||
|
#endif
|
||||||
|
|
||||||
VALUE rb_cPointer;
|
VALUE rb_cPointer;
|
||||||
|
|
||||||
typedef void (*freefunc_t)(void*);
|
typedef void (*freefunc_t)(void*);
|
||||||
|
@ -430,12 +439,10 @@ static VALUE
|
||||||
rb_fiddle_ptr_inspect(VALUE self)
|
rb_fiddle_ptr_inspect(VALUE self)
|
||||||
{
|
{
|
||||||
struct ptr_data *data;
|
struct ptr_data *data;
|
||||||
char str[1024];
|
|
||||||
|
|
||||||
TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
|
TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
|
||||||
snprintf(str, 1023, "#<%s:%p ptr=%p size=%ld free=%p>",
|
return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
|
||||||
rb_class2name(CLASS_OF(self)), data, data->ptr, data->size, data->free);
|
RB_OBJ_CLASSNAME(self), data, data->ptr, data->size, data->free);
|
||||||
return rb_str_new2(str);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -25,6 +25,15 @@
|
||||||
#define RSTRING_LEN(string) RSTRING(string)->len
|
#define RSTRING_LEN(string) RSTRING(string)->len
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef PRIsVALUE
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) (obj)
|
||||||
|
#else
|
||||||
|
# define PRIsVALUE "s"
|
||||||
|
# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
|
||||||
|
# define RB_OBJ_STRING(obj) StringValueCStr(obj)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_RUBY_ENCODING_H
|
#ifdef HAVE_RUBY_ENCODING_H
|
||||||
#include "ruby/encoding.h"
|
#include "ruby/encoding.h"
|
||||||
#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding())
|
#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding())
|
||||||
|
|
|
@ -804,10 +804,10 @@ static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_St
|
||||||
if (!allow_nan) {
|
if (!allow_nan) {
|
||||||
if (isinf(value)) {
|
if (isinf(value)) {
|
||||||
fbuffer_free(buffer);
|
fbuffer_free(buffer);
|
||||||
rb_raise(eGeneratorError, "%u: %s not allowed in JSON", __LINE__, StringValueCStr(tmp));
|
rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp));
|
||||||
} else if (isnan(value)) {
|
} else if (isnan(value)) {
|
||||||
fbuffer_free(buffer);
|
fbuffer_free(buffer);
|
||||||
rb_raise(eGeneratorError, "%u: %s not allowed in JSON", __LINE__, StringValueCStr(tmp));
|
rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fbuffer_append_str(buffer, tmp);
|
fbuffer_append_str(buffer, tmp);
|
||||||
|
|
|
@ -293,10 +293,9 @@ ossl_to_der_if_possible(VALUE obj)
|
||||||
static VALUE
|
static VALUE
|
||||||
ossl_make_error(VALUE exc, const char *fmt, va_list args)
|
ossl_make_error(VALUE exc, const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZ];
|
VALUE str = Qnil;
|
||||||
const char *msg;
|
const char *msg;
|
||||||
long e;
|
long e;
|
||||||
int len = 0;
|
|
||||||
|
|
||||||
#ifdef HAVE_ERR_PEEK_LAST_ERROR
|
#ifdef HAVE_ERR_PEEK_LAST_ERROR
|
||||||
e = ERR_peek_last_error();
|
e = ERR_peek_last_error();
|
||||||
|
@ -304,14 +303,19 @@ ossl_make_error(VALUE exc, const char *fmt, va_list args)
|
||||||
e = ERR_peek_error();
|
e = ERR_peek_error();
|
||||||
#endif
|
#endif
|
||||||
if (fmt) {
|
if (fmt) {
|
||||||
len = vsnprintf(buf, BUFSIZ, fmt, args);
|
str = rb_vsprintf(fmt, args);
|
||||||
}
|
}
|
||||||
if (len < BUFSIZ && e) {
|
if (e) {
|
||||||
if (dOSSL == Qtrue) /* FULL INFO */
|
if (dOSSL == Qtrue) /* FULL INFO */
|
||||||
msg = ERR_error_string(e, NULL);
|
msg = ERR_error_string(e, NULL);
|
||||||
else
|
else
|
||||||
msg = ERR_reason_error_string(e);
|
msg = ERR_reason_error_string(e);
|
||||||
len += snprintf(buf+len, BUFSIZ-len, "%s%s", (len ? ": " : ""), msg);
|
if (NIL_P(str)) {
|
||||||
|
str = rb_str_new_cstr(msg);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rb_str_cat2(rb_str_cat2(str, ": "), msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dOSSL == Qtrue){ /* show all errors on the stack */
|
if (dOSSL == Qtrue){ /* show all errors on the stack */
|
||||||
while ((e = ERR_get_error()) != 0){
|
while ((e = ERR_get_error()) != 0){
|
||||||
|
@ -320,8 +324,8 @@ ossl_make_error(VALUE exc, const char *fmt, va_list args)
|
||||||
}
|
}
|
||||||
ERR_clear_error();
|
ERR_clear_error();
|
||||||
|
|
||||||
if(len > BUFSIZ) len = rb_long2int(strlen(buf));
|
if (NIL_P(str)) str = rb_str_new(0, 0);
|
||||||
return rb_exc_new(exc, buf, len);
|
return rb_exc_new3(exc, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -95,15 +95,15 @@ extern VALUE eOSSLError;
|
||||||
*/
|
*/
|
||||||
#define OSSL_Check_Kind(obj, klass) do {\
|
#define OSSL_Check_Kind(obj, klass) do {\
|
||||||
if (!rb_obj_is_kind_of((obj), (klass))) {\
|
if (!rb_obj_is_kind_of((obj), (klass))) {\
|
||||||
ossl_raise(rb_eTypeError, "wrong argument (%s)! (Expected kind of %s)",\
|
ossl_raise(rb_eTypeError, "wrong argument (%"PRIsVALUE")! (Expected kind of %"PRIsVALUE")",\
|
||||||
rb_obj_classname(obj), rb_class2name(klass));\
|
rb_obj_class(obj), (klass));\
|
||||||
}\
|
}\
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define OSSL_Check_Instance(obj, klass) do {\
|
#define OSSL_Check_Instance(obj, klass) do {\
|
||||||
if (!rb_obj_is_instance_of((obj), (klass))) {\
|
if (!rb_obj_is_instance_of((obj), (klass))) {\
|
||||||
ossl_raise(rb_eTypeError, "wrong argument (%s)! (Expected instance of %s)",\
|
ossl_raise(rb_eTypeError, "wrong argument (%"PRIsVALUE")! (Expected instance of %"PRIsVALUE")",\
|
||||||
rb_obj_classname(obj), rb_class2name(klass));\
|
rb_obj_class(obj), (klass));\
|
||||||
}\
|
}\
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
|
@ -624,8 +624,8 @@ ossl_asn1_default_tag(VALUE obj)
|
||||||
}
|
}
|
||||||
tmp_class = rb_class_superclass(tmp_class);
|
tmp_class = rb_class_superclass(tmp_class);
|
||||||
}
|
}
|
||||||
ossl_raise(eASN1Error, "universal tag for %s not found",
|
ossl_raise(eASN1Error, "universal tag for %"PRIsVALUE" not found",
|
||||||
rb_class2name(CLASS_OF(obj)));
|
rb_obj_class(obj));
|
||||||
|
|
||||||
return -1; /* dummy */
|
return -1; /* dummy */
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,9 +213,9 @@ ossl_cipher_init(int argc, VALUE *argv, VALUE self, int mode)
|
||||||
* We deprecated the arguments for this method, but we decided
|
* We deprecated the arguments for this method, but we decided
|
||||||
* keeping this behaviour for backward compatibility.
|
* keeping this behaviour for backward compatibility.
|
||||||
*/
|
*/
|
||||||
const char *cname = rb_class2name(rb_obj_class(self));
|
VALUE cname = rb_class_path(rb_obj_class(self));
|
||||||
rb_warn("arguments for %s#encrypt and %s#decrypt were deprecated; "
|
rb_warn("arguments for %"PRIsVALUE"#encrypt and %"PRIsVALUE"#decrypt were deprecated; "
|
||||||
"use %s#pkcs5_keyivgen to derive key and IV",
|
"use %"PRIsVALUE"#pkcs5_keyivgen to derive key and IV",
|
||||||
cname, cname, cname);
|
cname, cname, cname);
|
||||||
StringValue(pass);
|
StringValue(pass);
|
||||||
GetCipher(self, ctx);
|
GetCipher(self, ctx);
|
||||||
|
|
|
@ -365,18 +365,11 @@ ossl_engine_get_cmds(VALUE self)
|
||||||
static VALUE
|
static VALUE
|
||||||
ossl_engine_inspect(VALUE self)
|
ossl_engine_inspect(VALUE self)
|
||||||
{
|
{
|
||||||
VALUE str;
|
ENGINE *e;
|
||||||
const char *cname = rb_class2name(rb_obj_class(self));
|
|
||||||
|
|
||||||
str = rb_str_new2("#<");
|
GetEngine(self, e);
|
||||||
rb_str_cat2(str, cname);
|
return rb_sprintf("#<%"PRIsVALUE" id=\"%s\" name=\"%s\">",
|
||||||
rb_str_cat2(str, " id=\"");
|
rb_obj_class(self), ENGINE_get_id(e), ENGINE_get_name(e));
|
||||||
rb_str_append(str, ossl_engine_get_id(self));
|
|
||||||
rb_str_cat2(str, "\" name=\"");
|
|
||||||
rb_str_append(str, ossl_engine_get_name(self));
|
|
||||||
rb_str_cat2(str, "\">");
|
|
||||||
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DefEngineConst(x) rb_define_const(cEngine, #x, INT2NUM(ENGINE_##x))
|
#define DefEngineConst(x) rb_define_const(cEngine, #x, INT2NUM(ENGINE_##x))
|
||||||
|
|
|
@ -693,35 +693,15 @@ ossl_x509_add_extension(VALUE self, VALUE extension)
|
||||||
static VALUE
|
static VALUE
|
||||||
ossl_x509_inspect(VALUE self)
|
ossl_x509_inspect(VALUE self)
|
||||||
{
|
{
|
||||||
VALUE str;
|
return rb_sprintf("#<%"PRIsVALUE": subject=%+"PRIsVALUE", "
|
||||||
const char *cname = rb_class2name(rb_obj_class(self));
|
"issuer=%+"PRIsVALUE", serial=%+"PRIsVALUE", "
|
||||||
|
"not_before=%+"PRIsVALUE", not_after=%+"PRIsVALUE">",
|
||||||
str = rb_str_new2("#<");
|
rb_obj_class(self),
|
||||||
rb_str_cat2(str, cname);
|
ossl_x509_get_subject(self),
|
||||||
rb_str_cat2(str, " ");
|
ossl_x509_get_issuer(self),
|
||||||
|
ossl_x509_get_serial(self),
|
||||||
rb_str_cat2(str, "subject=");
|
ossl_x509_get_not_before(self),
|
||||||
rb_str_append(str, rb_inspect(ossl_x509_get_subject(self)));
|
ossl_x509_get_not_after(self));
|
||||||
rb_str_cat2(str, ", ");
|
|
||||||
|
|
||||||
rb_str_cat2(str, "issuer=");
|
|
||||||
rb_str_append(str, rb_inspect(ossl_x509_get_issuer(self)));
|
|
||||||
rb_str_cat2(str, ", ");
|
|
||||||
|
|
||||||
rb_str_cat2(str, "serial=");
|
|
||||||
rb_str_append(str, rb_inspect(ossl_x509_get_serial(self)));
|
|
||||||
rb_str_cat2(str, ", ");
|
|
||||||
|
|
||||||
rb_str_cat2(str, "not_before=");
|
|
||||||
rb_str_append(str, rb_inspect(ossl_x509_get_not_before(self)));
|
|
||||||
rb_str_cat2(str, ", ");
|
|
||||||
|
|
||||||
rb_str_cat2(str, "not_after=");
|
|
||||||
rb_str_append(str, rb_inspect(ossl_x509_get_not_after(self)));
|
|
||||||
|
|
||||||
str = rb_str_cat2(str, ">");
|
|
||||||
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -609,7 +609,7 @@ static void
|
||||||
raise_from_check(pid_t pid, int status)
|
raise_from_check(pid_t pid, int status)
|
||||||
{
|
{
|
||||||
const char *state;
|
const char *state;
|
||||||
char buf[1024];
|
VALUE msg;
|
||||||
VALUE exc;
|
VALUE exc;
|
||||||
|
|
||||||
#if defined(WIFSTOPPED)
|
#if defined(WIFSTOPPED)
|
||||||
|
@ -627,8 +627,8 @@ raise_from_check(pid_t pid, int status)
|
||||||
else {
|
else {
|
||||||
state = "exited";
|
state = "exited";
|
||||||
}
|
}
|
||||||
snprintf(buf, sizeof(buf), "pty - %s: %ld", state, (long)pid);
|
msg = rb_sprintf("pty - %s: %ld", state, (long)pid);
|
||||||
exc = rb_exc_new2(eChildExited, buf);
|
exc = rb_exc_new3(eChildExited, msg);
|
||||||
rb_iv_set(exc, "status", rb_last_status_get());
|
rb_iv_set(exc, "status", rb_last_status_get());
|
||||||
rb_exc_raise(exc);
|
rb_exc_raise(exc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -418,10 +418,10 @@ extract_user_token(struct cparse_params *v, VALUE block_args,
|
||||||
|
|
||||||
if (!RB_TYPE_P(block_args, T_ARRAY)) {
|
if (!RB_TYPE_P(block_args, T_ARRAY)) {
|
||||||
rb_raise(rb_eTypeError,
|
rb_raise(rb_eTypeError,
|
||||||
"%s() %s %s (must be Array[2])",
|
"%s() %s %"PRIsVALUE" (must be Array[2])",
|
||||||
v->lex_is_iterator ? rb_id2name(v->lexmid) : "next_token",
|
v->lex_is_iterator ? rb_id2name(v->lexmid) : "next_token",
|
||||||
v->lex_is_iterator ? "yielded" : "returned",
|
v->lex_is_iterator ? "yielded" : "returned",
|
||||||
rb_class2name(CLASS_OF(block_args)));
|
rb_obj_class(block_args));
|
||||||
}
|
}
|
||||||
if (RARRAY_LEN(block_args) != 2) {
|
if (RARRAY_LEN(block_args) != 2) {
|
||||||
rb_raise(rb_eArgError,
|
rb_raise(rb_eArgError,
|
||||||
|
|
|
@ -1104,76 +1104,69 @@ static VALUE
|
||||||
strscan_inspect(VALUE self)
|
strscan_inspect(VALUE self)
|
||||||
{
|
{
|
||||||
struct strscanner *p;
|
struct strscanner *p;
|
||||||
char buf[BUFSIZE];
|
|
||||||
long len;
|
|
||||||
VALUE a, b;
|
VALUE a, b;
|
||||||
|
|
||||||
p = check_strscan(self);
|
p = check_strscan(self);
|
||||||
if (NIL_P(p->str)) {
|
if (NIL_P(p->str)) {
|
||||||
len = snprintf(buf, BUFSIZE, "#<%s (uninitialized)>",
|
a = rb_sprintf("#<%"PRIsVALUE" (uninitialized)>", rb_obj_class(self));
|
||||||
rb_class2name(CLASS_OF(self)));
|
return infect(a, p);
|
||||||
return infect(rb_str_new(buf, len), p);
|
|
||||||
}
|
}
|
||||||
if (EOS_P(p)) {
|
if (EOS_P(p)) {
|
||||||
len = snprintf(buf, BUFSIZE, "#<%s fin>",
|
a = rb_sprintf("#<%"PRIsVALUE" fin>", rb_obj_class(self));
|
||||||
rb_class2name(CLASS_OF(self)));
|
return infect(a, p);
|
||||||
return infect(rb_str_new(buf, len), p);
|
|
||||||
}
|
}
|
||||||
if (p->curr == 0) {
|
if (p->curr == 0) {
|
||||||
b = inspect2(p);
|
b = inspect2(p);
|
||||||
len = snprintf(buf, BUFSIZE, "#<%s %ld/%ld @ %s>",
|
a = rb_sprintf("#<%"PRIsVALUE" %ld/%ld @ %"PRIsVALUE">",
|
||||||
rb_class2name(CLASS_OF(self)),
|
rb_obj_class(self),
|
||||||
p->curr, S_LEN(p),
|
p->curr, S_LEN(p),
|
||||||
RSTRING_PTR(b));
|
b);
|
||||||
return infect(rb_str_new(buf, len), p);
|
return infect(a, p);
|
||||||
}
|
}
|
||||||
a = inspect1(p);
|
a = inspect1(p);
|
||||||
b = inspect2(p);
|
b = inspect2(p);
|
||||||
len = snprintf(buf, BUFSIZE, "#<%s %ld/%ld %s @ %s>",
|
a = rb_sprintf("#<%"PRIsVALUE" %ld/%ld %"PRIsVALUE" @ %"PRIsVALUE">",
|
||||||
rb_class2name(CLASS_OF(self)),
|
rb_obj_class(self),
|
||||||
p->curr, S_LEN(p),
|
p->curr, S_LEN(p),
|
||||||
RSTRING_PTR(a),
|
a, b);
|
||||||
RSTRING_PTR(b));
|
return infect(a, p);
|
||||||
return infect(rb_str_new(buf, len), p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
inspect1(struct strscanner *p)
|
inspect1(struct strscanner *p)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZE];
|
VALUE str;
|
||||||
char *bp = buf;
|
|
||||||
long len;
|
long len;
|
||||||
|
|
||||||
if (p->curr == 0) return rb_str_new2("");
|
if (p->curr == 0) return rb_str_new2("");
|
||||||
if (p->curr > INSPECT_LENGTH) {
|
if (p->curr > INSPECT_LENGTH) {
|
||||||
strcpy(bp, "..."); bp += 3;
|
str = rb_str_new_cstr("...");
|
||||||
len = INSPECT_LENGTH;
|
len = INSPECT_LENGTH;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
len = p->curr;
|
str = rb_str_new(0, 0);
|
||||||
|
len = p->curr;
|
||||||
}
|
}
|
||||||
memcpy(bp, CURPTR(p) - len, len); bp += len;
|
rb_str_cat(str, CURPTR(p) - len, len);
|
||||||
return rb_str_dump(rb_str_new(buf, bp - buf));
|
return rb_str_dump(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
inspect2(struct strscanner *p)
|
inspect2(struct strscanner *p)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZE];
|
VALUE str;
|
||||||
char *bp = buf;
|
|
||||||
long len;
|
long len;
|
||||||
|
|
||||||
if (EOS_P(p)) return rb_str_new2("");
|
if (EOS_P(p)) return rb_str_new2("");
|
||||||
len = S_LEN(p) - p->curr;
|
len = S_LEN(p) - p->curr;
|
||||||
if (len > INSPECT_LENGTH) {
|
if (len > INSPECT_LENGTH) {
|
||||||
len = INSPECT_LENGTH;
|
str = rb_str_new(CURPTR(p), INSPECT_LENGTH);
|
||||||
memcpy(bp, CURPTR(p), len); bp += len;
|
rb_str_cat2(str, "...");
|
||||||
strcpy(bp, "..."); bp += 3;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
memcpy(bp, CURPTR(p), len); bp += len;
|
str = rb_str_new(CURPTR(p), len);
|
||||||
}
|
}
|
||||||
return rb_str_dump(rb_str_new(buf, bp - buf));
|
return rb_str_dump(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =======================================================================
|
/* =======================================================================
|
||||||
|
|
|
@ -315,7 +315,7 @@ static VALUE mSyslog_log(int argc, VALUE *argv, VALUE self)
|
||||||
pri = *argv++;
|
pri = *argv++;
|
||||||
|
|
||||||
if (!FIXNUM_P(pri)) {
|
if (!FIXNUM_P(pri)) {
|
||||||
rb_raise(rb_eTypeError, "type mismatch: %s given", rb_class2name(CLASS_OF(pri)));
|
rb_raise(rb_eTypeError, "type mismatch: %"PRIsVALUE" given", rb_obj_class(pri));
|
||||||
}
|
}
|
||||||
|
|
||||||
syslog_write(FIX2INT(pri), argc, argv);
|
syslog_write(FIX2INT(pri), argc, argv);
|
||||||
|
@ -330,10 +330,10 @@ static VALUE mSyslog_inspect(VALUE self)
|
||||||
Check_Type(self, T_MODULE);
|
Check_Type(self, T_MODULE);
|
||||||
|
|
||||||
if (!syslog_opened)
|
if (!syslog_opened)
|
||||||
return rb_sprintf("<#%s: opened=false>", rb_class2name(self));
|
return rb_sprintf("<#%"PRIsVALUE": opened=false>", self);
|
||||||
|
|
||||||
return rb_sprintf("<#%s: opened=true, ident=\"%s\", options=%d, facility=%d, mask=%d>",
|
return rb_sprintf("<#%"PRIsVALUE": opened=true, ident=\"%s\", options=%d, facility=%d, mask=%d>",
|
||||||
rb_class2name(self),
|
self,
|
||||||
syslog_ident,
|
syslog_ident,
|
||||||
syslog_options,
|
syslog_options,
|
||||||
syslog_facility,
|
syslog_facility,
|
||||||
|
|
|
@ -83,8 +83,8 @@ _nativethread_consistency_check(ip)
|
||||||
# define DL_SYM GetProcAddress
|
# define DL_SYM GetProcAddress
|
||||||
# define TCL_INDEX 4
|
# define TCL_INDEX 4
|
||||||
# define TK_INDEX 3
|
# define TK_INDEX 3
|
||||||
# define TCL_NAME "tcl89%s"
|
# define TCL_NAME "tcl89"
|
||||||
# define TK_NAME "tk89%s"
|
# define TK_NAME "tk89"
|
||||||
# undef DLEXT
|
# undef DLEXT
|
||||||
# define DLEXT ".dll"
|
# define DLEXT ".dll"
|
||||||
#elif defined HAVE_DLOPEN
|
#elif defined HAVE_DLOPEN
|
||||||
|
@ -94,8 +94,8 @@ _nativethread_consistency_check(ip)
|
||||||
# define DL_SYM dlsym
|
# define DL_SYM dlsym
|
||||||
# define TCL_INDEX 8
|
# define TCL_INDEX 8
|
||||||
# define TK_INDEX 7
|
# define TK_INDEX 7
|
||||||
# define TCL_NAME "libtcl8.9%s"
|
# define TCL_NAME "libtcl8.9"
|
||||||
# define TK_NAME "libtk8.9%s"
|
# define TK_NAME "libtk8.9"
|
||||||
# ifdef __APPLE__
|
# ifdef __APPLE__
|
||||||
# undef DLEXT
|
# undef DLEXT
|
||||||
# define DLEXT ".dylib"
|
# define DLEXT ".dylib"
|
||||||
|
@ -116,7 +116,6 @@ ruby_open_tcl_dll(appname)
|
||||||
void (*p_Tcl_FindExecutable)(const char *);
|
void (*p_Tcl_FindExecutable)(const char *);
|
||||||
int n;
|
int n;
|
||||||
char *ruby_tcl_dll = 0;
|
char *ruby_tcl_dll = 0;
|
||||||
char tcl_name[20];
|
|
||||||
|
|
||||||
if (tcl_dll) return TCLTK_STUBS_OK;
|
if (tcl_dll) return TCLTK_STUBS_OK;
|
||||||
|
|
||||||
|
@ -127,7 +126,7 @@ ruby_open_tcl_dll(appname)
|
||||||
if (ruby_tcl_dll) {
|
if (ruby_tcl_dll) {
|
||||||
tcl_dll = (DL_HANDLE)DL_OPEN(ruby_tcl_dll);
|
tcl_dll = (DL_HANDLE)DL_OPEN(ruby_tcl_dll);
|
||||||
} else {
|
} else {
|
||||||
snprintf(tcl_name, sizeof tcl_name, TCL_NAME, DLEXT);
|
char tcl_name[] = TCL_NAME DLEXT;
|
||||||
/* examine from 8.9 to 8.1 */
|
/* examine from 8.9 to 8.1 */
|
||||||
for (n = '9'; n > '0'; n--) {
|
for (n = '9'; n > '0'; n--) {
|
||||||
tcl_name[TCL_INDEX] = n;
|
tcl_name[TCL_INDEX] = n;
|
||||||
|
@ -162,7 +161,6 @@ ruby_open_tk_dll()
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
char *ruby_tk_dll = 0;
|
char *ruby_tk_dll = 0;
|
||||||
char tk_name[20];
|
|
||||||
|
|
||||||
if (!tcl_dll) {
|
if (!tcl_dll) {
|
||||||
/* int ret = ruby_open_tcl_dll(RSTRING_PTR(rb_argv0)); */
|
/* int ret = ruby_open_tcl_dll(RSTRING_PTR(rb_argv0)); */
|
||||||
|
@ -176,7 +174,7 @@ ruby_open_tk_dll()
|
||||||
if (ruby_tk_dll) {
|
if (ruby_tk_dll) {
|
||||||
tk_dll = (DL_HANDLE)DL_OPEN(ruby_tk_dll);
|
tk_dll = (DL_HANDLE)DL_OPEN(ruby_tk_dll);
|
||||||
} else {
|
} else {
|
||||||
snprintf(tk_name, sizeof tk_name, TK_NAME, DLEXT);
|
char tk_name[] = TK_NAME DLEXT;
|
||||||
/* examine from 8.9 to 8.1 */
|
/* examine from 8.9 to 8.1 */
|
||||||
for (n = '9'; n > '0'; n--) {
|
for (n = '9'; n > '0'; n--) {
|
||||||
tk_name[TK_INDEX] = n;
|
tk_name[TK_INDEX] = n;
|
||||||
|
|
|
@ -843,15 +843,14 @@ create_ip_exc(interp, exc, fmt, va_alist)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
char buf[BUFSIZ];
|
VALUE msg;
|
||||||
VALUE einfo;
|
VALUE einfo;
|
||||||
struct tcltkip *ptr = get_ip(interp);
|
struct tcltkip *ptr = get_ip(interp);
|
||||||
|
|
||||||
va_init_list(args,fmt);
|
va_init_list(args,fmt);
|
||||||
vsnprintf(buf, BUFSIZ, fmt, args);
|
msg = rb_vsprintf(fmt, args);
|
||||||
buf[BUFSIZ - 1] = '\0';
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
einfo = rb_exc_new2(exc, buf);
|
einfo = rb_exc_new3(exc, msg);
|
||||||
rb_ivar_set(einfo, ID_at_interp, interp);
|
rb_ivar_set(einfo, ID_at_interp, interp);
|
||||||
if (ptr) {
|
if (ptr) {
|
||||||
Tcl_ResetResult(ptr->ip);
|
Tcl_ResetResult(ptr->ip);
|
||||||
|
|
|
@ -1193,19 +1193,18 @@ static void
|
||||||
ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...)
|
ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
char buf[BUFSIZ];
|
VALUE msg;
|
||||||
VALUE err_msg;
|
VALUE err_msg;
|
||||||
va_init_list(args, fmt);
|
va_init_list(args, fmt);
|
||||||
vsnprintf(buf, BUFSIZ, fmt, args);
|
msg = rb_vsprintf(fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
err_msg = ole_hresult2msg(hr);
|
err_msg = ole_hresult2msg(hr);
|
||||||
if(err_msg != Qnil) {
|
if(err_msg != Qnil) {
|
||||||
rb_raise(ecs, "%s\n%s", buf, StringValuePtr(err_msg));
|
rb_str_cat2(msg, "\n");
|
||||||
}
|
rb_str_append(msg, err_msg);
|
||||||
else {
|
|
||||||
rb_raise(ecs, "%s", buf);
|
|
||||||
}
|
}
|
||||||
|
rb_exc_raise(rb_exc_new3(ecs, msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -337,11 +337,8 @@ raise_zlib_error(int err, const char *msg)
|
||||||
rb_sys_fail(msg);
|
rb_sys_fail(msg);
|
||||||
/* no return */
|
/* no return */
|
||||||
default:
|
default:
|
||||||
{
|
exc = rb_exc_new3(cZError,
|
||||||
char buf[BUFSIZ];
|
rb_sprintf("unknown zlib error %d: %s", err, msg));
|
||||||
snprintf(buf, BUFSIZ, "unknown zlib error %d: %s", err, msg);
|
|
||||||
exc = rb_exc_new2(cZError, buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_exc_raise(exc);
|
rb_exc_raise(exc);
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#define RUBY_VERSION "2.0.0"
|
#define RUBY_VERSION "2.0.0"
|
||||||
#define RUBY_RELEASE_DATE "2014-01-19"
|
#define RUBY_RELEASE_DATE "2014-01-20"
|
||||||
#define RUBY_PATCHLEVEL 386
|
#define RUBY_PATCHLEVEL 387
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2014
|
#define RUBY_RELEASE_YEAR 2014
|
||||||
#define RUBY_RELEASE_MONTH 1
|
#define RUBY_RELEASE_MONTH 1
|
||||||
#define RUBY_RELEASE_DAY 19
|
#define RUBY_RELEASE_DAY 20
|
||||||
|
|
||||||
#include "ruby/version.h"
|
#include "ruby/version.h"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue