1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Merge changes between r11871 and r11907 from ruby_1_8.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@11908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
knu 2007-02-27 11:51:55 +00:00
parent b7111d382c
commit 9369118f8f
11 changed files with 85 additions and 60 deletions

View file

@ -1,3 +1,42 @@
Tue Feb 27 20:49:19 2007 Akinori MUSHA <knu@iDaemons.org>
* lib/base64.rb (Base64::b64encode): Fix documentation; submitted
by David Symonds <dsymonds@gmail.com> in [ruby-core:10432].
* regex.c (calculate_must_string, slow_search, re_search): Silence
warnings regarding char * vs. unsigned char * mismatch;
submitted by Lyle Johnson <lyle.johnson@gmail.com>
in [ruby-core:10416].
* ext/bigdecimal/bigdecimal.c (BigDecimal_load): Ditto.
* ext/digest/sha1/sha1ossl.c (SHA1_Finish): Ditto.
* ext/digest/rmd160/rmd160ossl.c (RMD160_Finish): Ditto.
* ext/digest/digest.c (rb_digest_base_finish,
rb_digest_base_update): Ditto.
* ext/nkf/nkf.c (rb_str_resize, rb_nkf_kconv, rb_nkf_guess1,
rb_nkf_guess2): Ditto.
* ext/thread/thread.c (wait_list_cleanup, rb_mutex_try_lock):
Eliminate rb_thread_critical switching where unnecessary;
implied by shugo in [ruby-dev:30412].
* ext/thread/thread.c (set_critical): Merge in
thread_exclusive_ensure().
* ext/thread/thread.c: Consistently use 0 and 1 for
rb_thread_critical values.
* ext/thread/thread.c: Use xmalloc()/xfree() instead of
malloc()/free(); pointed out by shugo in [ruby-dev:30412].
* lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::initialize):
Initialize @workdir properly to silence a warning under -w.
Submitted by <tommy at tmtm.org> in [ruby-dev:30400].
Sun Feb 25 02:50:51 2007 Akinori MUSHA <knu@iDaemons.org> Sun Feb 25 02:50:51 2007 Akinori MUSHA <knu@iDaemons.org>
* defines.h: Pull the RUBY_MBCHAR_MAXSIZE definition from trunk, * defines.h: Pull the RUBY_MBCHAR_MAXSIZE definition from trunk,

View file

@ -332,7 +332,7 @@ BigDecimal_load(VALUE self, VALUE str)
unsigned long m=0; unsigned long m=0;
SafeStringValue(str); SafeStringValue(str);
pch = RSTRING_PTR(str); pch = (unsigned char *)RSTRING_PTR(str);
/* First get max prec */ /* First get max prec */
while((*pch)!=(unsigned char)'\0' && (ch=*pch++)!=(unsigned char)':') { while((*pch)!=(unsigned char)'\0' && (ch=*pch++)!=(unsigned char)':') {
if(!ISDIGIT(ch)) { if(!ISDIGIT(ch)) {
@ -341,7 +341,7 @@ BigDecimal_load(VALUE self, VALUE str)
m = m*10 + (unsigned long)(ch-'0'); m = m*10 + (unsigned long)(ch-'0');
} }
if(m>VpBaseFig()) m -= VpBaseFig(); if(m>VpBaseFig()) m -= VpBaseFig();
GUARD_OBJ(pv,VpNewRbClass(m,pch,self)); GUARD_OBJ(pv,VpNewRbClass(m,(char *)pch,self));
m /= VpBaseFig(); m /= VpBaseFig();
if(m && pv->MaxPrec>m) pv->MaxPrec = m+1; if(m && pv->MaxPrec>m) pv->MaxPrec = m+1;
return ToValue(pv); return ToValue(pv);

View file

@ -519,7 +519,7 @@ rb_digest_base_update(VALUE self, VALUE str)
Data_Get_Struct(self, void, pctx); Data_Get_Struct(self, void, pctx);
StringValue(str); StringValue(str);
algo->update_func(pctx, RSTRING_PTR(str), RSTRING_LEN(str)); algo->update_func(pctx, (unsigned char *)RSTRING_PTR(str), RSTRING_LEN(str));
return self; return self;
} }
@ -537,7 +537,7 @@ rb_digest_base_finish(VALUE self)
Data_Get_Struct(self, void, pctx); Data_Get_Struct(self, void, pctx);
str = rb_str_new(0, algo->digest_len); str = rb_str_new(0, algo->digest_len);
algo->finish_func(pctx, RSTRING_PTR(str)); algo->finish_func(pctx, (unsigned char *)RSTRING_PTR(str));
/* avoid potential coredump caused by use of a finished context */ /* avoid potential coredump caused by use of a finished context */
algo->init_func(pctx); algo->init_func(pctx);

View file

@ -4,5 +4,5 @@
#include "rmd160ossl.h" #include "rmd160ossl.h"
void RMD160_Finish(RMD160_CTX *ctx, char *buf) { void RMD160_Finish(RMD160_CTX *ctx, char *buf) {
RIPEMD160_Final(buf, ctx); RIPEMD160_Final((unsigned char *)buf, ctx);
} }

View file

@ -6,5 +6,5 @@
void void
SHA1_Finish(SHA1_CTX *ctx, char *buf) SHA1_Finish(SHA1_CTX *ctx, char *buf)
{ {
SHA1_Final(buf, ctx); SHA1_Final((unsigned char *)buf, ctx);
} }

View file

@ -63,7 +63,7 @@ rb_nkf_putchar(c)
o_len += incsize; o_len += incsize;
rb_str_resize(result, o_len); rb_str_resize(result, o_len);
incsize *= 2; incsize *= 2;
output = RSTRING(result)->ptr; output = (unsigned char *)RSTRING(result)->ptr;
} }
output[output_ctr++] = c; output[output_ctr++] = c;
@ -158,13 +158,13 @@ rb_nkf_kconv(obj, opt, src)
input_ctr = 0; input_ctr = 0;
StringValue(src); StringValue(src);
input = RSTRING(src)->ptr; input = (unsigned char *)RSTRING(src)->ptr;
i_len = RSTRING(src)->len; i_len = RSTRING(src)->len;
result = rb_str_new(0, i_len*3 + 10); result = rb_str_new(0, i_len*3 + 10);
v = result; v = result;
output_ctr = 0; output_ctr = 0;
output = RSTRING(result)->ptr; output = (unsigned char *)RSTRING(result)->ptr;
o_len = RSTRING(result)->len; o_len = RSTRING(result)->len;
*output = '\0'; *output = '\0';
@ -213,7 +213,7 @@ rb_nkf_guess1(obj, src)
int sequence_counter = 0; int sequence_counter = 0;
StringValue(src); StringValue(src);
p = RSTRING(src)->ptr; p = (unsigned char *)RSTRING(src)->ptr;
pend = p + RSTRING(src)->len; pend = p + RSTRING(src)->len;
if (p == pend) return INT2FIX(_UNKNOWN); if (p == pend) return INT2FIX(_UNKNOWN);
@ -328,7 +328,7 @@ rb_nkf_guess2(obj, src)
input_ctr = 0; input_ctr = 0;
StringValue(src); StringValue(src);
input = RSTRING(src)->ptr; input = (unsigned char *)RSTRING(src)->ptr;
i_len = RSTRING(src)->len; i_len = RSTRING(src)->len;
if(x0201_f == WISH_TRUE) if(x0201_f == WISH_TRUE)

View file

@ -18,23 +18,16 @@ static VALUE rb_cConditionVariable;
static VALUE rb_cQueue; static VALUE rb_cQueue;
static VALUE rb_cSizedQueue; static VALUE rb_cSizedQueue;
static VALUE set_critical(VALUE value);
static VALUE static VALUE
thread_exclusive_do() thread_exclusive_do(void)
{ {
rb_thread_critical = Qtrue; rb_thread_critical = 1;
return rb_yield(Qundef); return rb_yield(Qundef);
} }
static VALUE
thread_exclusive_ensure(val)
VALUE val;
{
rb_thread_critical = val;
return Qundef;
}
/* /*
* call-seq: * call-seq:
* Thread.exclusive { block } => obj * Thread.exclusive { block } => obj
@ -45,9 +38,9 @@ thread_exclusive_ensure(val)
*/ */
static VALUE static VALUE
rb_thread_exclusive() rb_thread_exclusive(void)
{ {
return rb_ensure(thread_exclusive_do, Qundef, thread_exclusive_ensure, rb_thread_critical); return rb_ensure(thread_exclusive_do, Qundef, set_critical, rb_thread_critical);
} }
typedef struct _Entry { typedef struct _Entry {
@ -86,7 +79,7 @@ free_entries(Entry *first)
Entry *next; Entry *next;
while (first) { while (first) {
next = first->next; next = first->next;
free(first); xfree(first);
first = next; first = next;
} }
} }
@ -107,7 +100,7 @@ push_list(List *list, VALUE value)
entry = list->entry_pool; entry = list->entry_pool;
list->entry_pool = entry->next; list->entry_pool = entry->next;
} else { } else {
entry = (Entry *)malloc(sizeof(Entry)); entry = (Entry *)xmalloc(sizeof(Entry));
} }
entry->value = value; entry->value = value;
@ -254,9 +247,7 @@ static VALUE
wait_list_cleanup(List *list) wait_list_cleanup(List *list)
{ {
/* cleanup in case of spurious wakeups */ /* cleanup in case of spurious wakeups */
rb_thread_critical = 1;
remove_one(list, rb_thread_current()); remove_one(list, rb_thread_current());
rb_thread_critical = 0;
return Qnil; return Qnil;
} }
@ -325,7 +316,7 @@ free_mutex(Mutex *mutex)
{ {
assert_no_survivors(&mutex->waiting, "mutex", mutex); assert_no_survivors(&mutex->waiting, "mutex", mutex);
finalize_mutex(mutex); finalize_mutex(mutex);
free(mutex); xfree(mutex);
} }
static void static void
@ -347,7 +338,7 @@ static VALUE
rb_mutex_alloc(VALUE klass) rb_mutex_alloc(VALUE klass)
{ {
Mutex *mutex; Mutex *mutex;
mutex = (Mutex *)malloc(sizeof(Mutex)); mutex = (Mutex *)xmalloc(sizeof(Mutex));
init_mutex(mutex); init_mutex(mutex);
return Data_Wrap_Struct(klass, mark_mutex, free_mutex, mutex); return Data_Wrap_Struct(klass, mark_mutex, free_mutex, mutex);
} }
@ -381,20 +372,14 @@ static VALUE
rb_mutex_try_lock(VALUE self) rb_mutex_try_lock(VALUE self)
{ {
Mutex *mutex; Mutex *mutex;
VALUE result;
Data_Get_Struct(self, Mutex, mutex); Data_Get_Struct(self, Mutex, mutex);
result = Qfalse; if (RTEST(mutex->owner))
return Qfalse;
rb_thread_critical = 1;
if (!RTEST(mutex->owner)) {
mutex->owner = rb_thread_current(); mutex->owner = rb_thread_current();
result = Qtrue; return Qtrue;
}
rb_thread_critical = 0;
return result;
} }
/* /*
@ -456,7 +441,7 @@ static VALUE
set_critical(VALUE value) set_critical(VALUE value)
{ {
rb_thread_critical = (int)value; rb_thread_critical = (int)value;
return Qnil; return Qundef;
} }
static VALUE static VALUE
@ -598,7 +583,7 @@ free_condvar(ConditionVariable *condvar)
{ {
assert_no_survivors(&condvar->waiting, "condition variable", condvar); assert_no_survivors(&condvar->waiting, "condition variable", condvar);
finalize_condvar(condvar); finalize_condvar(condvar);
free(condvar); xfree(condvar);
} }
static void static void
@ -620,7 +605,7 @@ rb_condvar_alloc(VALUE klass)
{ {
ConditionVariable *condvar; ConditionVariable *condvar;
condvar = (ConditionVariable *)malloc(sizeof(ConditionVariable)); condvar = (ConditionVariable *)xmalloc(sizeof(ConditionVariable));
init_condvar(condvar); init_condvar(condvar);
return Data_Wrap_Struct(klass, mark_condvar, free_condvar, condvar); return Data_Wrap_Struct(klass, mark_condvar, free_condvar, condvar);
@ -639,11 +624,11 @@ wait_condvar(ConditionVariable *condvar, Mutex *mutex)
{ {
rb_thread_critical = 1; rb_thread_critical = 1;
if (!RTEST(mutex->owner)) { if (!RTEST(mutex->owner)) {
rb_thread_critical = Qfalse; rb_thread_critical = 0;
return; return;
} }
if (mutex->owner != rb_thread_current()) { if (mutex->owner != rb_thread_current()) {
rb_thread_critical = Qfalse; rb_thread_critical = 0;
rb_raise(rb_eThreadError, "Not owner"); rb_raise(rb_eThreadError, "Not owner");
} }
mutex->owner = Qnil; mutex->owner = Qnil;
@ -806,7 +791,7 @@ free_queue(Queue *queue)
assert_no_survivors(&queue->space_available.waiting, "queue", queue); assert_no_survivors(&queue->space_available.waiting, "queue", queue);
assert_no_survivors(&queue->value_available.waiting, "queue", queue); assert_no_survivors(&queue->value_available.waiting, "queue", queue);
finalize_queue(queue); finalize_queue(queue);
free(queue); xfree(queue);
} }
static void static void
@ -831,7 +816,7 @@ static VALUE
rb_queue_alloc(VALUE klass) rb_queue_alloc(VALUE klass)
{ {
Queue *queue; Queue *queue;
queue = (Queue *)malloc(sizeof(Queue)); queue = (Queue *)xmalloc(sizeof(Queue));
init_queue(queue); init_queue(queue);
return Data_Wrap_Struct(klass, mark_queue, free_queue, queue); return Data_Wrap_Struct(klass, mark_queue, free_queue, queue);
} }

View file

@ -102,7 +102,7 @@ module Base64
# #
# require 'base64' # require 'base64'
# data = "Now is the time for all good coders\nto learn Ruby" # data = "Now is the time for all good coders\nto learn Ruby"
# puts Base64.b64encode(data) # Base64.b64encode(data)
# #
# <i>Generates:</i> # <i>Generates:</i>
# #

View file

@ -81,6 +81,7 @@ module Test
@filters = [] @filters = []
@to_run = [] @to_run = []
@output_level = UI::NORMAL @output_level = UI::NORMAL
@workdir = nil
yield(self) if(block_given?) yield(self) if(block_given?)
end end

18
regex.c
View file

@ -1014,8 +1014,8 @@ calculate_must_string(start, end)
{ {
int mcnt; int mcnt;
int max = 0; int max = 0;
unsigned char *p = start; unsigned char *p = (unsigned char *)start;
unsigned char *pend = end; unsigned char *pend = (unsigned char *)end;
char *must = 0; char *must = 0;
if (start == NULL) return 0; if (start == NULL) return 0;
@ -1029,7 +1029,7 @@ calculate_must_string(start, end)
case exactn: case exactn:
mcnt = *p; mcnt = *p;
if (mcnt > max) { if (mcnt > max) {
must = p; must = (char *)p;
max = mcnt; max = mcnt;
} }
p += mcnt+1; p += mcnt+1;
@ -2689,7 +2689,7 @@ slow_search(little, llen, big, blen, translate)
} }
} }
if (slow_match(little, little+llen, big, bend, translate)) if (slow_match(little, little+llen, big, bend, (unsigned char *)translate))
return big - bsave; return big - bsave;
big+=mbclen(*big); big+=mbclen(*big);
@ -3222,13 +3222,13 @@ re_search(bufp, string, size, startpos, range, regs)
} }
pend = size; pend = size;
if (bufp->options & RE_OPTIMIZE_NO_BM) { if (bufp->options & RE_OPTIMIZE_NO_BM) {
pos = slow_search(bufp->must+1, len, pos = slow_search((unsigned char *)(bufp->must+1), len,
string+pbeg, pend-pbeg, (unsigned char*)(string+pbeg), pend-pbeg,
MAY_TRANSLATE()?translate:0); (char *)(MAY_TRANSLATE()?translate:0));
} }
else { else {
pos = bm_search(bufp->must+1, len, pos = bm_search((unsigned char *)(bufp->must+1), len,
string+pbeg, pend-pbeg, (unsigned char *)(string+pbeg), pend-pbeg,
bufp->must_skip, bufp->must_skip,
MAY_TRANSLATE()?translate:0); MAY_TRANSLATE()?translate:0);
} }

View file

@ -1,7 +1,7 @@
#define RUBY_VERSION "1.8.6" #define RUBY_VERSION "1.8.6"
#define RUBY_RELEASE_DATE "2007-02-25" #define RUBY_RELEASE_DATE "2007-02-27"
#define RUBY_VERSION_CODE 186 #define RUBY_VERSION_CODE 186
#define RUBY_RELEASE_CODE 20070225 #define RUBY_RELEASE_CODE 20070227
#define RUBY_PATCHLEVEL 0 #define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 6 #define RUBY_VERSION_TEENY 6
#define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 2 #define RUBY_RELEASE_MONTH 2
#define RUBY_RELEASE_DAY 25 #define RUBY_RELEASE_DAY 27
RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_version[];
RUBY_EXTERN const char ruby_release_date[]; RUBY_EXTERN const char ruby_release_date[];