どうも、少し前にExpatについて質問した者ですが、
xmlparse.c2622行目のstoreAtts()関数について、どうしても分からない事があったので質問しに来ました。
2665行目付近にappAtts = (const XML_Char **)atts;という式があります。
これは、ATTRBUTE構造体を(const char **)にキャストして、appAttsに添え字を使ってATTRBUTE構造体の各メンバにアクセス出来るようにしていると思いますが、そうであるなら
typedef struct {
const char *name;
const char *valuePtr;
const char *valueEnd;
char normalized;
} ATTRIBUTE;
appAtts[0]はname、appAtts[1]はvaluePtr、appAtts[2]はvaluePtr、appAtts[3]はnormalizedを指していると考えているのですが、
element.cのstartElementハンドラの第三引数、const char **attsに属性名及び属性値がベクタ形式で保持されている訳ですが、
保持している場合、const char *name,const char *valuePtr,const char *valueEnd、この三つにしか保持出来ないと思うのです、

前述のappAtts = (const XML_Char **)attsはATTRBUTE構造体の各メンバに添え字を使いアクセスするためにキャストして使用している、という考え方に基づき考えていった場合
startElementハンドラ内でatts[3]にアクセスした場合は、ATTRBUTE構造体のnormalizedを指すと考えられます。
しかし、normalizedは1バイトのchar型でありポインタではありません。1バイトの領域しか指さない事になります。
では、第三引数であるconst char **atts、は一体どこを指しているのか、
かれこれ二日行き詰っています。ご教授お願いします。