| 318 | } |
| 319 | |
| 320 | const StmtNode* execute(thread_db* tdbb, Request* request, ExeState* exeState) const override |
| 321 | { |
| 322 | if (checkMessageEof && |
| 323 | request->req_operation == Request::req_evaluate && |
| 324 | (request->req_flags & req_proc_select)) |
| 325 | { |
| 326 | const auto msg = request->getImpure<UCHAR>(checkMessageEof->impureOffset); |
| 327 | const auto eof = (SSHORT*) (msg + (IPTR) checkMessageEof->format->fmt_desc.back().dsc_address); |
| 328 | |
| 329 | if (!*eof) |
| 330 | request->req_operation = Request::req_return; |
| 331 | } |
| 332 | |
| 333 | return CompoundStmtNode::execute(tdbb, request, exeState); |
| 334 | } |
| 335 | |
| 336 | private: |
| 337 | MessageNode* checkMessageEof; |