> |いや、それは違います。無駄に感じるのは、その後にループがあるからです。 > > それを含めても > > 1 str2 = rb_str_new5(str,0, RSTRING(str)->len*len); > 2 for (i=0; i<len; i++) { > 3 memcpy(RSTRING(str2)->ptr+(i*RSTRING(str)->len), > 4 RSTRING(str)->ptr, RSTRING(str)->len); > 5 } > 6 RSTRING(str2)->ptr[RSTRING(str2)->len] = '\0'; > 7 > 8 OBJ_INFECT(str2, str); > 9 > 10 return str2; > > 1でstrのdereference > 2でi<lenの比較1回(loopの中身は実行しない) > 6でdereferenceが2回、代入が1回 > 8でフラグのコピー > > ですから、差は無視できるのではないかと思います。むしろ、負の > 数を通しちゃったりするほうがまずいように思えるのですが。 > taintの伝搬は長さ0なんだから気にしなくてもよいと思いますが。 あまりこだわる気もなくなってきて、しかも、かなりボケてきた自覚がでてき たので、アレですが、self の長さが零でも、len (times) 分はループするわ けですよね。