@@ -1155,76 +1155,69 @@ static VALUE
11551155strscan_inspect (VALUE self )
11561156{
11571157 struct strscanner * p ;
1158- char buf [BUFSIZE ];
1159- long len ;
11601158 VALUE a , b ;
11611159
11621160 p = check_strscan (self );
11631161 if (NIL_P (p -> str )) {
1164- len = snprintf (buf , BUFSIZE , "#<%s (uninitialized)>" ,
1165- rb_class2name (CLASS_OF (self )));
1166- return infect (rb_str_new (buf , len ), p );
1162+ a = rb_sprintf ("#<%" PRIsVALUE " (uninitialized)>" , rb_obj_class (self ));
1163+ return infect (a , p );
11671164 }
11681165 if (EOS_P (p )) {
1169- len = snprintf (buf , BUFSIZE , "#<%s fin>" ,
1170- rb_class2name (CLASS_OF (self )));
1171- return infect (rb_str_new (buf , len ), p );
1166+ a = rb_sprintf ("#<%" PRIsVALUE " fin>" , rb_obj_class (self ));
1167+ return infect (a , p );
11721168 }
11731169 if (p -> curr == 0 ) {
1174- b = inspect2 (p );
1175- len = snprintf ( buf , BUFSIZE , "#<%s %ld/%ld @ %s >" ,
1176- rb_class2name ( CLASS_OF ( self ) ),
1177- p -> curr , S_LEN (p ),
1178- RSTRING_PTR ( b ) );
1179- return infect (rb_str_new ( buf , len ) , p );
1170+ b = inspect2 (p );
1171+ a = rb_sprintf ( "#<%" PRIsVALUE " %ld/%ld @ %" PRIsVALUE " >" ,
1172+ rb_obj_class ( self ),
1173+ p -> curr , S_LEN (p ),
1174+ b );
1175+ return infect (a , p );
11801176 }
11811177 a = inspect1 (p );
11821178 b = inspect2 (p );
1183- len = snprintf (buf , BUFSIZE , "#<%s %ld/%ld %s @ %s>" ,
1184- rb_class2name (CLASS_OF (self )),
1185- p -> curr , S_LEN (p ),
1186- RSTRING_PTR (a ),
1187- RSTRING_PTR (b ));
1188- return infect (rb_str_new (buf , len ), p );
1179+ a = rb_sprintf ("#<%" PRIsVALUE " %ld/%ld %" PRIsVALUE " @ %" PRIsVALUE ">" ,
1180+ rb_obj_class (self ),
1181+ p -> curr , S_LEN (p ),
1182+ a , b );
1183+ return infect (a , p );
11891184}
11901185
11911186static VALUE
11921187inspect1 (struct strscanner * p )
11931188{
1194- char buf [BUFSIZE ];
1195- char * bp = buf ;
1189+ VALUE str ;
11961190 long len ;
11971191
11981192 if (p -> curr == 0 ) return rb_str_new2 ("" );
11991193 if (p -> curr > INSPECT_LENGTH ) {
1200- strcpy ( bp , "..." ); bp += 3 ;
1201- len = INSPECT_LENGTH ;
1194+ str = rb_str_new_cstr ( "..." );
1195+ len = INSPECT_LENGTH ;
12021196 }
12031197 else {
1204- len = p -> curr ;
1198+ str = rb_str_new (0 , 0 );
1199+ len = p -> curr ;
12051200 }
1206- memcpy ( bp , CURPTR (p ) - len , len ); bp += len ;
1207- return rb_str_dump (rb_str_new ( buf , bp - buf ) );
1201+ rb_str_cat ( str , CURPTR (p ) - len , len );
1202+ return rb_str_dump (str );
12081203}
12091204
12101205static VALUE
12111206inspect2 (struct strscanner * p )
12121207{
1213- char buf [BUFSIZE ];
1214- char * bp = buf ;
1208+ VALUE str ;
12151209 long len ;
12161210
12171211 if (EOS_P (p )) return rb_str_new2 ("" );
12181212 len = S_LEN (p ) - p -> curr ;
12191213 if (len > INSPECT_LENGTH ) {
1220- len = INSPECT_LENGTH ;
1221- memcpy (bp , CURPTR (p ), len ); bp += len ;
1222- strcpy (bp , "..." ); bp += 3 ;
1214+ str = rb_str_new (CURPTR (p ), INSPECT_LENGTH );
1215+ rb_str_cat2 (str , "..." );
12231216 }
12241217 else {
1225- memcpy ( bp , CURPTR (p ), len ); bp += len ;
1218+ str = rb_str_new ( CURPTR (p ), len );
12261219 }
1227- return rb_str_dump (rb_str_new ( buf , bp - buf ) );
1220+ return rb_str_dump (str );
12281221}
12291222
12301223/* =======================================================================
0 commit comments