# \[Bug #3522\] String::size return invalid size on mswin64

**URL:** <https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004>\
**Category:** Development\
**Created:** [July 2, 2010, 12:06pm UTC](https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004 "2010-07-02T12:06:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![shintaro\_kuwamoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@shintaro\_kuwamoto](https://www.ruby-forum.com/u/shintaro_kuwamoto)\
**Post date:** [July 2, 2010, 12:06pm UTC](https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004/1 "2010-07-02T12:06:36Z")

</div>

Bug #3522: String::size return invalid size on mswin64  
[http://redmine.ruby-lang.org/issues/show/3522](http://redmine.ruby-lang.org/issues/show/3522)

e$B5/I\<\<Te(B: shintaro kuwamoto  
e$B%9%F!\<%?%9e(B: Open, e$BM%@hEYe(B: Normal  
e$B%+%F%4%je(B: core, Target version: 1.9.2  
ruby -v: ruby 1.9.2dev (2010-07-01 revision 28513) [x64-mswin64\_90]

x64-mswin64\_90e$B4D6-$G!"e(B15e$BJ8;z0J\>e$Ne(BUTF-8e$BJ8;zNs$N%5%$%:$,@5\>o$K\<hF@$G$-$^$;$s!#e(B

Z:\ruby-trunk\build\>ruby -e"puts "1234567890123\u{3042}".size"  
14

Z:\ruby-trunk\build\>ruby -e"puts "12345678901234\u{3042}".size"  
19

---

<div class="post-metadata">

**Author:** ![shintaro\_kuwamoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@shintaro\_kuwamoto](https://www.ruby-forum.com/u/shintaro_kuwamoto)\
**Post date:** [July 5, 2010, 3:31pm UTC](https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004/2 "2010-07-05T15:31:39Z")

</div>

e$B1sF#$G$9!#e(B

2010e$BG/e(B7e$B7ne(B2e$BF|e(B19:05 shintaro kuwamoto  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> x64-mswin64\_90e$B4D6-$G!"e(B15e$BJ8;z0J\>e$Ne(BUTF-8e$BJ8;zNs$N%5%$%:$,@5\>o$K\<hF@$G$-$^$;$s!#e(B
> 
> Z:\ruby-trunk\build\>ruby -e"puts "1234567890123\u{3042}".size"  
> 14
> 
> Z:\ruby-trunk\build\>ruby -e"puts "12345678901234\u{3042}".size"  
> 19

e$B$R$g$C$H$7$F0J2\<$N%Q%C%A$GD\>$i$J$$$G$7$g$&$+!#e(B

diff --git a/string.c b/string.c  
index 703797f…510c04e 100644  
— a/string.c  
+++ b/string.c  
@@ -141,7 +141,7 @@ static inline const char \*  
search\_nonascii(const char \*p, const char \*e)  
{  
#if SIZEOF\_VALUE == 8  
-# define NONASCII\_MASK 0x8080808080808080LL  
+# define NONASCII\_MASK 0x8080808080808080ULL  
#elif SIZEOF\_VALUE == 4

# define NONASCII\_MASK 0x80808080UL

#endif

---

<div class="post-metadata">

**Author:** ![shintaro\_kuwamoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@shintaro\_kuwamoto](https://www.ruby-forum.com/u/shintaro_kuwamoto)\
**Post date:** [July 5, 2010, 4:43pm UTC](https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004/3 "2010-07-05T16:43:40Z")

</div>

e$B$3$s$P$s$o!#e(B

> #if SIZEOF\_VALUE == 8  
> -# define NONASCII\_MASK 0x8080808080808080LL  
> +# define NONASCII\_MASK 0x8080808080808080ULL  
> #elif SIZEOF\_VALUE == 4
> 
> # define NONASCII\_MASK 0x80808080UL
> 
> #endif

e$B$_$_!#F0$/$h$&$K$J$j$^$7$?!#e(B  
e$B$"$j$,$H$&$4$6$$$^$9!#e(B

Z:\ruby-trunk\build\>ruby -e"puts “1234567890123\u{3042}”.size"  
14

Z:\ruby-trunk\build\>ruby -e"puts “12345678901234\u{3042}”.size"  
15

---

<div class="post-metadata">

**Author:** ![shintaro\_kuwamoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@shintaro\_kuwamoto](https://www.ruby-forum.com/u/shintaro_kuwamoto)\
**Post date:** [July 5, 2010, 5:37pm UTC](https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004/4 "2010-07-05T17:37:32Z")

</div>

e$B%A%1%C%He(B #3522 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r28544.  
shintaro, thank you for reporting this issue.  
Your contribution to Ruby is greatly appreciated.  
May Ruby be with you.

* * *

[http://redmine.ruby-lang.org/issues/show/3522](http://redmine.ruby-lang.org/issues/show/3522)

---

<div class="post-metadata">

**Author:** ![shintaro\_kuwamoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@shintaro\_kuwamoto](https://www.ruby-forum.com/u/shintaro_kuwamoto)\
**Post date:** [July 5, 2010, 5:21pm UTC](https://www.ruby-forum.com/t/bug-3522-string-size-return-invalid-size-on-mswin64/191004/5 "2010-07-05T17:21:44Z")

</div>

e$B1sF#$G$9!#e(B

2010e$BG/e(B7e$B7ne(B5e$BF|e(B23:42 kuwamoto shintaro  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B$_$_!#F0$/$h$&$K$J$j$^$7$?!#e(B  
> e$B$"$j$,$H$&$4$6$$$^$9!#e(B

e$B$_$_!#3NG’$"$j$,$H$&$4$6$$$^$9!#%3%\_%C%H$7$F$\*$-$^$9!#e(B

# e$B$7$+$7!"e(B0x8080808080808080LL e$B$re(B signed long long int

e$B$K$7$F$7$^$&$N$Oe(B

# VC e$B$N%P%0$N$h$&$J5$$b$9$ke(B
