RSTRING(str)->ptr と RSTRING(str)->len の ptr と len が無いそうだ。

RSTRING は、

#define RSTRING(obj) (R_CAST(RString)(obj))

のように定義されている。
obj って、VALUE 型だったんだっけ?
多分、R_CAST だし、キャストしてるんだろう。
RString が、Ruby での文字列の実体だったのか〜。

RString 構造体は、こんな風になっている:

struct RString {
    struct RBasic basic;
    union {
        struct {
            long len;
            char *ptr;
            union {
                long capa;
                VALUE shared;
            } aux;
        } heap;
        char ary[RSTRING_EMBED_LEN_MAX + 1];
    } as;
};

無いのは当然だ。
でも、ちょっと待って…
その下に、RSTRING_LEN とか、RSTRING_PTR がある。
ということは、置換すればいけるんじゃないか?
やってくる〜〜