#include <windows.h>
#include <iostream.h>
#define NSIS_MAX_STRLEN 1024
typedef struct _stack_t_dll {
struct _stack_t_dll *next;
char text[NSIS_MAX_STRLEN];
} stack_t_dll;
stack_t_dll **g_stacktop;
int g_stringsize=NSIS_MAX_STRLEN;
//g_stacktop=???;
int popstring_dll(char *str);
void pushstring_dll(char *str);
void main()
{
char szResult[1024]="";
int nError;
pushstring_dll("xxx");
nError=popstring_dll(szResult);
cout << "szResult={"<< szResult <<"} ("<< nError <<")"<<endl;
}
int popstring_dll(char *str)
{
stack_t_dll *th;
if (!g_stacktop || !*g_stacktop) return 1;
th=(*g_stacktop);
lstrcpy(str,th->text);
*g_stacktop = th->next;
GlobalFree((HGLOBAL)th);
return 0;
}
void pushstring_dll(char *str)
{
stack_t_dll *th;
if (!g_stacktop) return;
th=(stack_t_dll*)GlobalAlloc(GPTR,sizeof(stack_t_dll)+g_stringsize);
lstrcpyn(th->text,str,g_stringsize);
th->next=*g_stacktop;
*g_stacktop=th;
}
Stack in plugin
Wanted to use own plugin stack for data saving, but can't figure it out. nError=1, after pushstring_dll.