[macruby-changes] [3717] MacRuby/branches/icu/ext
source_changes at macosforge.org
source_changes at macosforge.org
Tue Mar 9 15:04:11 PST 2010
Revision: 3717
http://trac.macosforge.org/projects/ruby/changeset/3717
Author: lsansonetti at apple.com
Date: 2010-03-09 15:04:10 -0800 (Tue, 09 Mar 2010)
Log Message:
-----------
port to new bstr APIs
Modified Paths:
--------------
MacRuby/branches/icu/ext/bigdecimal/bigdecimal.c
MacRuby/branches/icu/ext/digest/bubblebabble/bubblebabble.c
MacRuby/branches/icu/ext/digest/digest.c
MacRuby/branches/icu/ext/libyaml/rubyext.c
MacRuby/branches/icu/ext/openssl/ossl.c
MacRuby/branches/icu/ext/openssl/ossl_bio.c
MacRuby/branches/icu/ext/openssl/ossl_digest.c
MacRuby/branches/icu/ext/openssl/ossl_ssl.c
MacRuby/branches/icu/ext/ripper/extconf.rb
MacRuby/branches/icu/ext/socket/socket.c
MacRuby/branches/icu/ext/zlib/zlib.c
Modified: MacRuby/branches/icu/ext/bigdecimal/bigdecimal.c
===================================================================
--- MacRuby/branches/icu/ext/bigdecimal/bigdecimal.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/bigdecimal/bigdecimal.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -2523,9 +2523,7 @@
/* Skip all '_' after digit: 2006-6-30 */
ni = 0;
- VALUE bstr = rb_bytestring_new();
- rb_bytestring_resize(bstr, strlen(szVal)+1);
- psz = (char *)rb_bytestring_byte_pointer(bstr);
+ psz = (char *)xmalloc(strlen(szVal)+1);
i = 0;
ipn = 0;
while((psz[i]=szVal[ipn])!=0) {
Modified: MacRuby/branches/icu/ext/digest/bubblebabble/bubblebabble.c
===================================================================
--- MacRuby/branches/icu/ext/digest/bubblebabble/bubblebabble.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/digest/bubblebabble/bubblebabble.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -40,7 +40,7 @@
}
const size_t p_len = (digest_len | 1) * 3 + 2;
- p = (UInt8 *)alloca(p_len + 1);
+ p = (UInt8 *)malloc(p_len + 1);
i = j = 0;
p[j++] = 'x';
@@ -74,7 +74,9 @@
p[j] = 'x';
- return rb_bytestring_new_with_data(p, p_len);
+ VALUE bstr = rb_bstr_new_with_data(p, p_len);
+ free(p);
+ return bstr;
}
/*
Modified: MacRuby/branches/icu/ext/digest/digest.c
===================================================================
--- MacRuby/branches/icu/ext/digest/digest.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/digest/digest.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -52,7 +52,7 @@
}
const size_t p_len = digest_len * 2;
- p = (UInt8 *)alloca(p_len + 1);
+ p = (UInt8 *)malloc(p_len + 1);
for (i = 0; i < digest_len; i++) {
unsigned char byte = digest[i];
@@ -61,7 +61,9 @@
p[i + i + 1] = hex[byte & 0x0f];
}
- return rb_bytestring_new_with_data(p, p_len);
+ VALUE bstr = rb_bstr_new_with_data(p, p_len);
+ free(p);
+ return bstr;
}
/*
Modified: MacRuby/branches/icu/ext/libyaml/rubyext.c
===================================================================
--- MacRuby/branches/icu/ext/libyaml/rubyext.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/libyaml/rubyext.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -157,12 +157,7 @@
if (!NIL_P(input)) {
assert(parser != NULL);
- if (CLASS_OF(input) == rb_cByteString) {
- yaml_parser_set_input_string(parser,
- (const unsigned char *)rb_bytestring_byte_pointer(input),
- rb_bytestring_length(input));
- }
- else if (TYPE(input) == T_STRING) {
+ if (TYPE(input) == T_STRING) {
const char * instring = RSTRING_PTR(input);
yaml_parser_set_input_string(parser,
(const unsigned char *)(instring),
@@ -524,10 +519,7 @@
tag = "tag:yaml.org,2002:str";
}
VALUE handler = handler_for_tag(parser, (yaml_char_t *)tag);
- VALUE scalarval = (VALUE)CFStringCreateWithBytes(NULL, (const UInt8 *)val,
- parser->event.data.scalar.length,
- kCFStringEncodingUTF8, true);
- CFMakeCollectable((CFTypeRef)scalarval);
+ VALUE scalarval = rb_str_new(val, parser->event.data.scalar.length);
return interpret_value(parser, scalarval, handler);
}
@@ -635,9 +627,7 @@
{
VALUE argv[2];
- argv[0] = (VALUE)CFStringCreateWithBytes(NULL, (const UInt8 *)tag,
- strlen(tag),
- kCFStringEncodingUTF8, true);
+ argv[0] = rb_str_new2(tag);
argv[1] = value;
return rb_class_new_instance(2, argv, rb_cYamlNode);
@@ -655,9 +645,7 @@
if (tag == NULL) {
tag = "str";
}
- VALUE scalarval = (VALUE)CFStringCreateWithBytes(NULL, (const UInt8 *)val,
- parser->event.data.scalar.length,
- kCFStringEncodingUTF8, true);
+ VALUE scalarval = rb_str_new(val, parser->event.data.scalar.length);
return make_yaml_node(tag, scalarval);
}
@@ -848,10 +836,9 @@
}
static int
-rb_yaml_bytestring_output_handler(void *bs, unsigned char *buffer, size_t size)
+rb_yaml_str_output_handler(void *str, unsigned char *buffer, size_t size)
{
- CFMutableDataRef data = rb_bytestring_wrapped_data((VALUE)bs);
- CFDataAppendBytes(data, (const UInt8*)buffer, (CFIndex)size);
+ rb_str_cat((VALUE)str, (char *)buffer, size);
return 1;
}
@@ -870,18 +857,21 @@
GC_WB(&remitter->output, output);
yaml_emitter_t *emitter = &remitter->emitter;
if (!NIL_P(output)) {
- if (CLASS_OF(output) == rb_cByteString) {
- yaml_emitter_set_output(emitter, rb_yaml_bytestring_output_handler,
- (void *)output);
- }
- else if (TYPE(output) == T_FILE) {
- yaml_emitter_set_output(emitter, rb_yaml_io_output_handler,
- (void *)output);
- }
- else {
- rb_raise(rb_eArgError, "unsupported YAML output type %s",
- rb_obj_classname(output));
- }
+ switch (TYPE(output)) {
+ case T_FILE:
+ yaml_emitter_set_output(emitter, rb_yaml_io_output_handler,
+ (void *)output);
+ break;
+
+ case T_STRING:
+ yaml_emitter_set_output(emitter, rb_yaml_str_output_handler,
+ (void *)output);
+ break;
+
+ default:
+ rb_raise(rb_eArgError, "unsupported YAML output type %s",
+ rb_obj_classname(output));
+ }
}
return output;
}
@@ -892,7 +882,7 @@
VALUE output = Qnil;
rb_scan_args(argc, argv, "01", &output);
if (NIL_P(output)) {
- output = rb_bytestring_new();
+ output = rb_str_new(NULL, 0);
}
rb_yaml_emitter_set_output(self, 0, output);
return self;
@@ -991,8 +981,7 @@
yaml_event_t ev;
yaml_emitter_t *emitter = &RYAMLEmitter(self)->emitter;
yaml_char_t *output = (yaml_char_t *)RSTRING_PTR(val);
- const size_t length = *(VALUE *)val == rb_cByteString
- ? RSTRING_LEN(val) : strlen((const char *)output);
+ const size_t length = RSTRING_LEN(val);
int can_omit_tag = 0;
int string_tag = 0;
Modified: MacRuby/branches/icu/ext/openssl/ossl.c
===================================================================
--- MacRuby/branches/icu/ext/openssl/ossl.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/openssl/ossl.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -121,7 +121,7 @@
VALUE
ossl_buf2str(char *buf, int len)
{
- return rb_bytestring_new_with_data((UInt8 *)buf, len);
+ return rb_bstr_new_with_data((UInt8 *)buf, len);
}
/*
Modified: MacRuby/branches/icu/ext/openssl/ossl_bio.c
===================================================================
--- MacRuby/branches/icu/ext/openssl/ossl_bio.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/openssl/ossl_bio.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -39,11 +39,8 @@
}
else {
StringValue(obj);
- if (CLASS_OF(obj) != rb_cByteString) {
- rb_raise(rb_eArgError, "expected ByteString object");
- }
- bio = BIO_new_mem_buf(rb_bytestring_byte_pointer(obj),
- rb_bytestring_length(obj));
+ obj = rb_str_bstr(obj);
+ bio = BIO_new_mem_buf(rb_bstr_bytes(obj), rb_bstr_length(obj));
if (!bio) ossl_raise(eOSSLError, NULL);
}
Modified: MacRuby/branches/icu/ext/openssl/ossl_digest.c
===================================================================
--- MacRuby/branches/icu/ext/openssl/ossl_digest.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/openssl/ossl_digest.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -175,17 +175,15 @@
GetDigest(self, ctx);
if (NIL_P(str)) {
- str = rb_bytestring_new();
+ str = rb_bstr_new();
}
else {
StringValue(str);
- if (CLASS_OF(str) != rb_cByteString) {
- rb_raise(rb_eArgError, "expected ByteString object");
- }
+ str = rb_str_bstr(str);
}
- rb_bytestring_resize(str, EVP_MD_CTX_size(ctx));
+ rb_bstr_resize(str, EVP_MD_CTX_size(ctx));
- EVP_DigestFinal_ex(ctx, rb_bytestring_byte_pointer(str), NULL);
+ EVP_DigestFinal_ex(ctx, rb_bstr_bytes(str), NULL);
return str;
}
Modified: MacRuby/branches/icu/ext/openssl/ossl_ssl.c
===================================================================
--- MacRuby/branches/icu/ext/openssl/ossl_ssl.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/openssl/ossl_ssl.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -1167,16 +1167,14 @@
rb_scan_args(argc, argv, "11", &len, &str);
ilen = NUM2INT(len);
if(NIL_P(str)) {
- str = rb_bytestring_new();
+ str = rb_bstr_new();
}
else{
StringValue(str);
- rb_str_modify(str);
- if (CLASS_OF(str) != rb_cByteString) {
- rb_raise(rb_eArgError, "expected ByteString object");
- }
+ rb_str_modify(str);
+ str = rb_str_bstr(str);
}
- rb_bytestring_resize(str, ilen);
+ rb_bstr_resize(str, ilen);
if(ilen == 0) return str;
Data_Get_Struct(self, SSL, ssl);
@@ -1185,8 +1183,8 @@
if(!nonblock && SSL_pending(ssl) <= 0)
rb_thread_wait_fd(FPTR_TO_FD(fptr));
for (;;){
- nread = SSL_read(ssl, rb_bytestring_byte_pointer(str),
- rb_bytestring_length(str));
+ nread = SSL_read(ssl, rb_bstr_bytes(str),
+ rb_bstr_length(str));
switch(ssl_get_error(ssl, nread)){
case SSL_ERROR_NONE:
goto end;
Modified: MacRuby/branches/icu/ext/ripper/extconf.rb
===================================================================
--- MacRuby/branches/icu/ext/ripper/extconf.rb 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/ripper/extconf.rb 2010-03-09 23:04:10 UTC (rev 3717)
@@ -16,6 +16,7 @@
$defs << '-DRIPPER_DEBUG' if $debug
$VPATH << '$(topdir)' << '$(top_srcdir)'
$INCFLAGS << ' -I$(topdir) -I$(top_srcdir) -I$(top_srcdir)/onig'
+ $CFLAGS << ' -std=c99'
create_makefile 'ripper'
end
Modified: MacRuby/branches/icu/ext/socket/socket.c
===================================================================
--- MacRuby/branches/icu/ext/socket/socket.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/socket/socket.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -597,17 +597,17 @@
}
fd = fptr->fd;
- str = rb_bytestring_new();
- rb_bytestring_resize(str, buflen);
+ str = rb_bstr_new();
+ rb_bstr_resize(str, buflen);
retry:
rb_thread_wait_fd(fd);
rb_io_check_closed(fptr);
- if (rb_bytestring_length(str) != buflen) {
+ if (rb_bstr_length(str) != buflen) {
rb_raise(rb_eRuntimeError, "buffer string modified");
}
TRAP_BEG;
- slen = recvfrom(fd, rb_bytestring_byte_pointer(str), buflen, flags,
+ slen = recvfrom(fd, rb_bstr_bytes(str), buflen, flags,
(struct sockaddr *)buf, &alen);
TRAP_END;
@@ -617,8 +617,8 @@
}
rb_sys_fail("recvfrom(2)");
}
- if (slen < rb_bytestring_length(str)) {
- rb_bytestring_resize(str, slen);
+ if (slen < rb_bstr_length(str)) {
+ rb_bstr_resize(str, slen);
}
rb_obj_taint(str);
switch (from) {
@@ -677,19 +677,19 @@
}
fd = fptr->fd;
- str = rb_bytestring_new();
- rb_bytestring_resize(str, buflen);
+ str = rb_bstr_new();
+ rb_bstr_resize(str, buflen);
rb_io_check_closed(fptr);
rb_io_set_nonblock(fptr);
- slen = recvfrom(fd, rb_bytestring_byte_pointer(str), buflen, flags,
+ slen = recvfrom(fd, rb_bstr_bytes(str), buflen, flags,
(struct sockaddr *)buf, &alen);
if (slen < 0) {
rb_sys_fail("recvfrom(2)");
}
- if (slen < rb_bytestring_length(str)) {
- rb_bytestring_resize(str, slen);
+ if (slen < rb_bstr_length(str)) {
+ rb_bstr_resize(str, slen);
}
rb_obj_taint(str);
switch (from) {
Modified: MacRuby/branches/icu/ext/zlib/zlib.c
===================================================================
--- MacRuby/branches/icu/ext/zlib/zlib.c 2010-03-09 23:03:42 UTC (rev 3716)
+++ MacRuby/branches/icu/ext/zlib/zlib.c 2010-03-09 23:04:10 UTC (rev 3717)
@@ -187,9 +187,9 @@
void Init_zlib _((void));
-#define BSTRING_LEN(s) rb_bytestring_length(s)
-#define BSTRING_PTR(s) (rb_bytestring_byte_pointer(s))
-#define BSTRING_PTR_BYTEF(s) ((Bytef*)rb_bytestring_byte_pointer(s))
+#define BSTRING_LEN(s) rb_bstr_length(s)
+#define BSTRING_PTR(s) (rb_bstr_bytes(s))
+#define BSTRING_PTR_BYTEF(s) ((Bytef*)rb_bstr_bytes(s))
/*--------- Exceptions --------*/
@@ -403,8 +403,8 @@
long inc;
if (NIL_P(z->buf)) {
- GC_WB(&z->buf, rb_bytestring_new());
- rb_bytestring_resize(z->buf, ZSTREAM_INITIAL_BUFSIZE);
+ GC_WB(&z->buf, rb_bstr_new());
+ rb_bstr_resize(z->buf, ZSTREAM_INITIAL_BUFSIZE);
z->buf_filled = 0;
z->stream.next_out = BSTRING_PTR_BYTEF(z->buf);
z->stream.avail_out = ZSTREAM_INITIAL_BUFSIZE;
@@ -419,7 +419,7 @@
if (inc < ZSTREAM_AVAIL_OUT_STEP_MIN) {
inc = ZSTREAM_AVAIL_OUT_STEP_MIN;
}
- rb_bytestring_resize(z->buf, z->buf_filled + inc);
+ rb_bstr_resize(z->buf, z->buf_filled + inc);
z->stream.avail_out = (inc < ZSTREAM_AVAIL_OUT_STEP_MAX) ?
inc : ZSTREAM_AVAIL_OUT_STEP_MAX;
}
@@ -430,13 +430,13 @@
zstream_expand_buffer_into(struct zstream *z, int size)
{
if (NIL_P(z->buf)) {
- GC_WB(&z->buf, rb_bytestring_new());
+ GC_WB(&z->buf, rb_bstr_new());
z->buf_filled = 0;
z->stream.next_out = BSTRING_PTR_BYTEF(z->buf);
z->stream.avail_out = size;
}
else if (z->stream.avail_out != size) {
- rb_bytestring_resize(z->buf, z->buf_filled + size);
+ rb_bstr_resize(z->buf, z->buf_filled + size);
z->stream.next_out = BSTRING_PTR_BYTEF(z->buf) + z->buf_filled;
z->stream.avail_out = size;
}
@@ -446,30 +446,29 @@
zstream_append_buffer(struct zstream *z, const Bytef *src, int len)
{
if (NIL_P(z->buf)) {
- GC_WB(&z->buf, rb_bytestring_new_with_data((UInt8*)src, len));
+ GC_WB(&z->buf, rb_bstr_new_with_data((UInt8*)src, len));
z->buf_filled = len;
z->stream.next_out = BSTRING_PTR_BYTEF(z->buf);
z->stream.avail_out = 0;
return;
}
- CFMutableDataRef data = rb_bytestring_wrapped_data(z->buf);
- if (CFDataGetLength(data) < (z->buf_filled + len)) {
- CFDataSetLength(data, z->buf_filled + len);
+ if (rb_bstr_length(z->buf) < (z->buf_filled + len)) {
+ rb_bstr_resize(z->buf, z->buf_filled + len);
z->stream.avail_out = 0;
} else if (z->stream.avail_out >= len) {
z->stream.avail_out -= len;
} else {
z->stream.avail_out = 0;
}
-
- CFDataAppendBytes(data, (const UInt8*)src, len);
+
+ rb_bstr_concat(z->buf, (const UInt8 *)src, len);
z->buf_filled += len;
z->stream.next_out = BSTRING_PTR_BYTEF(z->buf) + z->buf_filled;
}
#define zstream_append_buffer2(z,v) \
- zstream_append_buffer((z),(Bytef*)rb_bytestring_byte_pointer(v),rb_bytestring_length(v))
+ zstream_append_buffer((z),(Bytef*)rb_bstr_bytes(v),rb_bstr_length(v))
static VALUE
zstream_detach_buffer(struct zstream *z)
@@ -477,11 +476,11 @@
VALUE dst;
if (NIL_P(z->buf)) {
- dst = rb_bytestring_new();
+ dst = rb_bstr_new();
}
else {
dst = z->buf;
- rb_bytestring_resize(dst, z->buf_filled);
+ rb_bstr_resize(dst, z->buf_filled);
}
z->buf = Qnil;
@@ -500,7 +499,7 @@
return zstream_detach_buffer(z);
}
- rb_bytestring_resize(z->buf, len);
+ rb_bstr_resize(z->buf, len);
dst = z->buf;
z->buf_filled -= len;
UInt8 *buf = BSTRING_PTR(z->buf);
@@ -536,17 +535,15 @@
if (len <= 0) return;
if (NIL_P(z->input)) {
- GC_WB(&z->input, rb_bytestring_new_with_data((UInt8*)src, len));
+ GC_WB(&z->input, rb_bstr_new_with_data((UInt8*)src, len));
} else {
- rb_bytestring_append_bytes(z->input, (const UInt8*)src, len);
+ rb_bstr_concat(z->input, (const UInt8*)src, len);
}
}
#define zstream_append_input2(z,v) \
do { \
- if (*(VALUE *)v != rb_cByteString) { \
- v = rb_coerce_to_bytestring(v); \
- } \
+ v = rb_str_bstr(v); \
zstream_append_input((z), BSTRING_PTR_BYTEF(v), BSTRING_LEN(v)); \
} \
while(0)
@@ -559,7 +556,7 @@
} else {
UInt8 *buf = BSTRING_PTR(z->input);
memmove(buf, buf+len, BSTRING_LEN(z->input) - len);
- rb_bytestring_resize(z->input, BSTRING_LEN(z->input) - len);
+ rb_bstr_resize(z->input, BSTRING_LEN(z->input) - len);
}
}
@@ -584,9 +581,9 @@
VALUE dst;
if (NIL_P(z->input)) {
- dst = rb_bytestring_new();
+ dst = rb_bstr_new();
} else {
- dst = z->input;
+ dst = z->input;
}
z->input = Qnil;
return dst;
@@ -1115,9 +1112,7 @@
lev = ARG_LEVEL(level);
CFShow((CFStringRef)src);
StringValue(src);
- if (CLASS_OF(src) != rb_cByteString) {
- src = rb_coerce_to_bytestring(src);
- }
+ src = rb_str_bstr(src);
zstream_init_deflate(z);
err = deflateInit(&z->stream, lev);
if (err != Z_OK) {
@@ -1141,9 +1136,7 @@
return;
}
StringValue(src);
- if (CLASS_OF(src) != rb_cByteString) {
- src = rb_coerce_to_bytestring(src);
- }
+ src = rb_str_bstr(src);
if (flush != Z_NO_FLUSH || BSTRING_LEN(src) > 0) { /* prevent BUF_ERROR */
zstream_run(z, BSTRING_PTR_BYTEF(src), BSTRING_LEN(src), flush);
}
@@ -1270,9 +1263,7 @@
OBJ_INFECT(obj, dic);
StringValue(src);
- if (CLASS_OF(src) != rb_cByteString) {
- src = rb_coerce_to_bytestring(src);
- }
+ src = rb_str_bstr(src);
err = deflateSetDictionary(&z->stream,
BSTRING_PTR(src), BSTRING_LEN(src));
if (err != Z_OK) {
@@ -1421,11 +1412,9 @@
}
else {
StringValue(src);
- if (CLASS_OF(src) != rb_cByteString) {
- src = rb_coerce_to_bytestring(src);
- }
+ src = rb_str_bstr(src);
zstream_append_buffer2(z, src);
- dst = rb_bytestring_new(0, 0);
+ dst = rb_bstr_new();
}
}
else {
@@ -2000,7 +1989,7 @@
if (len < 0)
rb_raise(rb_eArgError, "negative length %d given", len);
if (len == 0)
- return rb_bytestring_new(0, 0);
+ return rb_bstr_new();
while (!ZSTREAM_IS_FINISHED(&gz->z) && gz->z.buf_filled < len) {
gzfile_read_more(gz);
}
@@ -2031,9 +2020,9 @@
if (len == 0) {
if (NIL_P(outbuf))
- return rb_bytestring_new(0, 0);
+ return rb_bstr_new();
else {
- rb_bytestring_resize(outbuf, 0);
+ rb_bstr_resize(outbuf, 0);
return outbuf;
}
}
@@ -2057,7 +2046,7 @@
return dst;
}
else {
- rb_bytestring_resize(outbuf, BSTRING_LEN(dst));
+ rb_bstr_resize(outbuf, BSTRING_LEN(dst));
UInt8 *buf = BSTRING_PTR(outbuf);
memcpy(buf, BSTRING_PTR(dst), BSTRING_LEN(dst));
return outbuf;
@@ -2076,7 +2065,7 @@
if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
gzfile_check_footer(gz);
}
- return rb_bytestring_new(0, 0);
+ return rb_bstr_new();
}
dst = zstream_detach_buffer(&gz->z);
@@ -2623,12 +2612,8 @@
{
struct gzfile *gz = get_gzfile(obj);
- if (TYPE(str) != T_STRING) {
- str = rb_obj_as_string(str);
- }
- if (CLASS_OF(str) != rb_cByteString) {
- str = rb_coerce_to_bytestring(str);
- }
+ StringValue(str);
+ str = rb_str_bstr(str);
gzfile_write(gz, BSTRING_PTR_BYTEF(str), BSTRING_LEN(str));
return INT2FIX(BSTRING_LEN(str));
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100309/f3a8258e/attachment-0001.html>
More information about the macruby-changes
mailing list