Copyright (c) 2001 Matthias Kramm <kramm@quiss.org>
- This file is distributed under the GPL, see file COPYING for details
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
-*/
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "../rfxswf.h"
while(op)
{
action->next = (ActionTAG*)malloc(sizeof(ActionTAG));
+ memset(action->next, 0, sizeof(ActionTAG));
action->next->prev = action;
action->next->next = 0;
+ action->next->parent = tmp.next;
action = action->next;
op = swf_GetU8(tag);
void swf_ActionFree(ActionTAG*action)
{
+ if(!action) {
+ fprintf(stderr, "Warning: freeing zero action");
+ return;
+ }
+ action = action->parent;
+ if(!action) {
+ fprintf(stderr, "Warning: freeing zero action (no parent)");
+ return;
+ }
+
while(action)
{
ActionTAG*tmp;
static ActionTAG*lastATAG(ActionTAG*atag)
{
- ActionTAG*last;
+ ActionTAG*last = 0;
while(atag) {
last = atag;
atag=atag->next;
ActionTAG* action_Constantpool(ActionTAG*atag, char* constantpool) {return atag;}
ActionTAG* action_With(ActionTAG*atag, char*object) {return atag;}
+#include "../action/actioncompiler.h"
+
+ActionTAG* swf_ActionCompile(const char* source, int version)
+{
+ TAG* tag;
+ ActionTAG* a = 0;
+ void*buffer = 0;
+ int len = 0;
+ int ret;
+
+ tag = swf_InsertTag(NULL, ST_DOACTION);
+ ret = compileSWFActionCode(source, version, &buffer, &len);
+ if(!ret || buffer==0 || len == 0)
+ return 0;
+
+ swf_SetBlock(tag, buffer, len);
+ swf_SetU8(tag, 0);
+
+ free(buffer);
+
+ a = swf_ActionGet(tag);
+ swf_DeleteTag(tag);
+ return a;
+}
+
+
/*
Properties: