- } else if (PyString_Check(x)) {
- if (PyObject_AsReadBuffer(x, &q, &n))
- goto end;
- qd.p = q;
- qd.e = 0;
- if (!ec_ptparse(&qd, p))
- VALERR(qd.e);
+ } else if (TEXT_CHECK(x)) {
+ qd.p = TEXT_PTR(x); qd.e = 0;
+ qd_skipspc(&qd); paren = qd_delim(&qd, '(');
+ if (!ec_ptparse(&qd, p)) VALERR(qd.e);
+ qd_skipspc(&qd); if (paren && !qd_delim(&qd, ')'))
+ { EC_DESTROY(p); VALERR("missing `)'"); }
+ qd_skipspc(&qd); if (!qd_eofp(&qd)) VALERR("junk at eof");