# \`split': negative string size (or size too big) (ArgumentError)

**URL:** <https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068>\
**Category:** Development\
**Created:** [December 4, 2007, 9:53am UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068 "2007-12-04T09:53:19Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 4, 2007, 9:53am UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068/1 "2007-12-04T09:53:19Z")

</div>

“e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//) e$B$He(B (EUC-JP  
e$B$Ge(B) e$B9T$&$He(B negative string size e$B$H$J$j$^$9!#e(B

% ./ruby -ve ‘p “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//)’  
ruby 1.9.0 (2007-12-04 patchlevel 0) [i686-linux]  
-e:1:in `split': negative string size (or size too big) (ArgumentError) from -e:1:in`’

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 4, 2007, 12:19pm UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068/2 "2007-12-04T12:19:24Z")

</div>

e$B$J$+$@$G$9!#e(B

At Tue, 4 Dec 2007 17:52:27 +0900,  
Tanaka A. wrote in [ruby-dev:32452]:

> “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//) e$B$He(B (EUC-JP  
> e$B$Ge(B) e$B9T$&$He(B negative string size e$B$H$J$j$^$9!#e(B
> 
> % ./ruby -ve ‘p “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//)’  
> ruby 1.9.0 (2007-12-04 patchlevel 0) [i686-linux]  
> -e:1:in `split': negative string size (or size too big) (ArgumentError) from -e:1:in`’

rb\_reg\_search()e$B$,J8;zC10L$N0LCV$rJV$9$N$K!“e(Brb\_str\_split\_m()e$B$G$Oe(B  
bytee$B0LCV$H$7$F;H$C$F$$$k$?$a$G$9$M!#e(BBEG()e$B$de(BEND()e$B$be(Bbytee$B0LCV$N$^$^e(B  
e$B$J$N$G!”%a%=%C%I$NLa$jCM$H$7$FJV$9$H$-$KJ8;z0LCV$KJQ49$9$k$h$&$Ke(B  
e$B$7$?$[$&$,$$$$$N$G$O$J$$$G$7$g$&$+!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 4, 2007, 12:20pm UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068/3 "2007-12-04T12:20:00Z")

</div>

e$B$J$+$@$G$9!#e(B

At Tue, 4 Dec 2007 17:52:27 +0900,  
Tanaka A. wrote in [ruby-dev:32452]:

> “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//) e$B$He(B (EUC-JP  
> e$B$Ge(B) e$B9T$&$He(B negative string size e$B$H$J$j$^$9!#e(B
> 
> % ./ruby -ve ‘p “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//)’  
> ruby 1.9.0 (2007-12-04 patchlevel 0) [i686-linux]  
> -e:1:in `split': negative string size (or size too big) (ArgumentError) from -e:1:in`’

rb\_reg\_search()e$B$,J8;zC10L$N0LCV$rJV$9$N$K!“e(Brb\_str\_split\_m()e$B$G$Oe(B  
bytee$B0LCV$H$7$F;H$C$F$$$k$?$a$G$9$M!#e(BBEG()e$B$de(BEND()e$B$be(Bbytee$B0LCV$N$^$^e(B  
e$B$J$N$G!”%a%=%C%I$NLa$jCM$H$7$FJV$9$H$-$KJ8;z0LCV$KJQ49$9$k$h$&$Ke(B  
e$B$7$?$[$&$,$$$$$N$G$O$J$$$G$7$g$&$+!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 6, 2007, 12:38pm UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068/4 "2007-12-06T12:38:21Z")

</div>

e$B$J$+$@$G$9!#e(B

At Tue, 4 Dec 2007 20:17:55 +0900,  
Nobuyoshi N. wrote in [ruby-dev:32453]:

> At Tue, 4 Dec 2007 17:52:27 +0900,  
> Tanaka A. wrote in [ruby-dev:32452]:
> 
> > “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//) e$B$He(B (EUC-JP  
> > e$B$Ge(B) e$B9T$&$He(B negative string size e$B$H$J$j$^$9!#e(B
> > 
> > % ./ruby -ve ‘p “e$B$”$$$&$($\*e(B".force\_encoding(“euc-jp”).split(//)’  
> > ruby 1.9.0 (2007-12-04 patchlevel 0) [i686-linux]  
> > -e:1:in `split': negative string size (or size too big) (ArgumentError) from -e:1:in`’

e$B$3$l0J30$K$b!“e(B  
p “e$B$”$$$&$($\*e(B”.partition(“e$B$&e(B”) #=\> [“e$B$”$$e(B",  
“e$B$&e(B”, “e$B$\*e(B”]

# -_- encoding: shift\_jis -_-

p “e$BI=\<(e(B”.partition("\") #=\> [“e$BI=e(B”, “\”, “”]

e$B$H$+$$$m$$$m$\*$+$7$J$3$H$K$J$C$F$k$N$G!“e(Bbyte/char  
offsete$B$N;H$$$oe(B  
e$B$1$K4X$7$F$O$b$C$H8+D\>$9I,MW$,$”$j$=$&$G$9!#e(B

> rb\_reg\_search()e$B$,J8;zC10L$N0LCV$rJV$9$N$K!“e(Brb\_str\_split\_m()e$B$G$Oe(B  
> bytee$B0LCV$H$7$F;H$C$F$$$k$?$a$G$9$M!#e(BBEG()e$B$de(BEND()e$B$be(Bbytee$B0LCV$N$^$^e(B  
> e$B$J$N$G!”%a%=%C%I$NLa$jCM$H$7$FJV$9$H$-$KJ8;z0LCV$KJQ49$9$k$h$&$Ke(B  
> e$B$7$?$[$&$,$$$$$N$G$O$J$$$G$7$g$&$+!#e(B

e$B$H$j$"$($:$3$C$A$@$1!#e(B

# Index: re.c

— re.c (resuult 14122)  
+++ re.c (working copy)  
@@ -865,5 +865,5 @@ rb\_reg\_search(VALUE re, VALUE str, int p  
OBJ\_INFECT(match, str);

- return rb\_str\_sublen(RMATCH(match)-\>str, result);

- return result;  
}

@@ -1836,10 +1836,10 @@ reg\_operand(VALUE s, int check)  
}

-static VALUE  
+static long  
rb\_reg\_match\_pos(VALUE re, VALUE str, long pos)  
{  
if (NIL\_P(str)) {  
rb\_backref\_set(Qnil);

- return Qnil;

- return -1;  
}  
str = reg\_operand(str, Qtrue);  
@@ -1848,5 +1848,5 @@ rb\_reg\_match\_pos(VALUE re, VALUE str, lo  
pos += RSTRING\_LEN(str);  
if (pos \< 0) {

- return Qnil;

- return pos;  
}  
}  
@@ -1854,8 +1854,5 @@ rb\_reg\_match\_pos(VALUE re, VALUE str, lo  
}  
pos = rb\_reg\_search(re, str, pos, 0);

- if (pos \< 0) {
- return Qnil;
- }
- return LONG2FIX(pos);

- return pos;  
}

@@ -1872,5 +1869,7 @@ VALUE  
rb\_reg\_match(VALUE re, VALUE str)  
{

- return rb\_reg\_match\_pos(re, str, 0);

- long pos = rb\_reg\_match\_pos(re, str, 0);
- if (pos \< 0) return Qnil;
- return LONG2FIX(pos);  
}

@@ -1937,4 +1936,5 @@ rb\_reg\_match2(VALUE re)  
return Qnil;  
}

- start = rb\_str\_sublen(line, start);  
return LONG2FIX(start);  
}  
@@ -1982,6 +1982,6 @@ rb\_reg\_match\_m(int argc, VALUE \*argv, VA  
}

- result = rb\_reg\_match\_pos(re, str, pos);
- if (NIL\_P(result)) {

- pos = rb\_reg\_match\_pos(re, str, pos);
- if (pos \< 0) {  
rb\_backref\_set(Qnil);  
return Qnil;

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 10, 2007, 1:49am UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068/5 "2007-12-10T01:49:35Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:32472] Re: `split’: negative string size (or size  
too big) (ArgumentError)”  
on Dec.06,2007 20:36:28, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
| e$B$3$l0J30$K$b!“e(B  
| p “e$B$”$$$&$($_e(B".partition(“e$B$&e(B”) #=\> [“e$B$”$$e(B", “e$B$&e(B”, "e$B$e(B"]  
|  
| # -- encoding: shift\_jis -_-  
| p “e$BI=\<(e(B”.partition(”\") #=\> [“e$BI=e(B”, “\”, “”]  
|  
| e$B$H$+$$$m$$$m$\*$+$7$J$3$H$K$J$C$F$k$N$G!“e(Bbyte/char offsete$B$N;H$$$oe(B  
| e$B$1$K4X$7$F$O$b$C$H8+D\>$9I,MW$,$”$j$=$&$G$9!#e(B

e$B$A$g$C$H%\_%K%^%`:F8=%1!\<%9$,:n$l$F$J$$$N$G$9$,!"\<j85$G$Oe(B  
String#sube$B$Ge(BSEGVe$B$b5/$-$F$$$^$9!#e(B

| \> rb\_reg\_search()e$B$,J8;zC10L$N0LCV$rJV$9$N$K!“e(Brb\_str\_split\_m()e$B$G$Oe(B  
| \> bytee$B0LCV$H$7$F;H$C$F$$$k$?$a$G$9$M!#e(BBEG()e$B$de(BEND()e$B$be(Bbytee$B0LCV$N$^$^e(B  
| \> e$B$J$N$G!”%a%=%C%I$NLa$jCM$H$7$FJV$9$H$-$KJ8;z0LCV$KJQ49$9$k$h$&$Ke(B  
| \> e$B$7$?$[$&$,$$$$$N$G$O$J$$$G$7$g$&$+!#e(B  
|  
| e$B$H$j$"$($:$3$C$A$@$1!#e(B

e$B$3$N%Q%C%A$GLdBj$,2r7h$9$k$C$]$$$3$H$O3NG’$7$F$"$k$N$G$9$,!"e(B  
e$BF~$i$J$$$s$G$7$g$&$+e(B?

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 10, 2007, 5:27am UTC](https://www.ruby-forum.com/t/split-negative-string-size-or-size-too-big-argumenterror/122068/6 "2007-12-10T05:27:39Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32500] Re: `split’: negative string size (or  
size too big) (ArgumentError)”  
on Mon, 10 Dec 2007 09:48:29 +0900, “U.Nakamura”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B$3$N%Q%C%A$GLdBj$,2r7h$9$k$C$]$$$3$H$O3NG’$7$F$"$k$N$G$9$,!"e(B  
|e$BF~$i$J$$$s$G$7$g$&$+e(B?

e$BF~$l$F$/$@$5$$!#e(B\> e$B$J$+$@$5$se(B
