| 813 | } |
| 814 | |
| 815 | void TelnetDebugger::evaluateExpression(const char *tag, S32 frame, const char *evalBuffer) |
| 816 | { |
| 817 | // Make sure we're passing a valid frame to the eval. |
| 818 | if ( frame > gEvalState.stack.size() ) |
| 819 | frame = gEvalState.stack.size() - 1; |
| 820 | if ( frame < 0 ) |
| 821 | frame = 0; |
| 822 | |
| 823 | // Build a buffer just big enough for this eval. |
| 824 | const char* format = "return %s;"; |
| 825 | dsize_t len = dStrlen( format ) + dStrlen( evalBuffer ); |
| 826 | char* buffer = new char[ len ]; |
| 827 | dSprintf( buffer, len, format, evalBuffer ); |
| 828 | |
| 829 | // Execute the eval. |
| 830 | CodeBlock *newCodeBlock = new CodeBlock(); |
| 831 | const char* result = newCodeBlock->compileExec( NULL, buffer, false, frame ); |
| 832 | delete [] buffer; |
| 833 | |
| 834 | // Create a new buffer that fits the result. |
| 835 | format = "EVALOUT %s %s\r\n"; |
| 836 | len = dStrlen( format ) + dStrlen( tag ) + dStrlen( result ); |
| 837 | buffer = new char[ len ]; |
| 838 | dSprintf( buffer, len, format, tag, result[0] ? result : "\"\"" ); |
| 839 | |
| 840 | send( buffer ); |
| 841 | delete [] buffer; |
| 842 | } |
| 843 | |
| 844 | void TelnetDebugger::dumpFileList() |
| 845 | { |
nothing calls this directly
no test coverage detected