* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include <assert.h>
+
#include "vbscript.h"
+#include "parse.h"
+#include "parser.tab.h"
+
+#include "wine/debug.h"
+WINE_DEFAULT_DEBUG_CHANNEL(vbscript);
WINE_DECLARE_DEBUG_CHANNEL(vbscript_disas);
typedef struct _statement_ctx_t {
return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_nequal);
case EXPR_NEW:
return push_instr_str(ctx, OP_new, ((string_expression_t*)expr)->value);
+ case EXPR_NOARG:
+ return push_instr_int(ctx, OP_hres, DISP_E_PARAMNOTFOUND);
case EXPR_NOT:
return compile_unary_expression(ctx, (unary_expression_t*)expr, OP_not);
case EXPR_NOTHING:
return E_OUTOFMEMORY;
class_desc->props[i].is_public = prop_decl->is_public;
+ class_desc->props[i].is_array = prop_decl->is_array;
- if(prop_decl->is_array) {
- class_desc->props[i].is_array = TRUE;
+ if(prop_decl->is_array)
class_desc->array_cnt++;
- }
}
if(class_desc->array_cnt) {
for(i=0; i < code->bstr_cnt; i++)
SysFreeString(code->bstr_pool[i]);
+ if(code->context)
+ IDispatch_Release(code->context);
heap_pool_free(&code->heap);
heap_free(code->bstr_pool);
{
vbscode_t *ret;
- ret = heap_alloc(sizeof(*ret));
+ ret = heap_alloc_zero(sizeof(*ret));
if(!ret)
return NULL;
ret->option_explicit = ctx->parser.option_explicit;
- ret->bstr_pool = NULL;
- ret->bstr_pool_size = 0;
- ret->bstr_cnt = 0;
- ret->pending_exec = FALSE;
-
ret->main_code.type = FUNC_GLOBAL;
- ret->main_code.name = NULL;
ret->main_code.code_ctx = ret;
- ret->main_code.vars = NULL;
- ret->main_code.var_cnt = 0;
- ret->main_code.array_cnt = 0;
- ret->main_code.arg_cnt = 0;
- ret->main_code.args = NULL;
list_init(&ret->entry);
return ret;