Index: edit.c ================================================================== --- edit.c +++ edit.c @@ -27,15 +27,15 @@ #define MRUCOUNT 32 static MRU mru[MRUCOUNT]; static int curmru; static char*solution_data; -static int solution_length; +static size_t solution_length; static inline void discard_solution(void) { if(solution_data) { - sqlite3_free(solution_data); + free(solution_data); solution_data=0; solution_length=0; } } @@ -1008,11 +1008,11 @@ Object*o; FILE*fp; size_t size=0; char*buf=0; char*p; - sqlite3_str*sol=0; + FILE*sol=0; Value v; if(!cmd || !*cmd) return; fp=main_options['i']?stdin:popen(cmd,"r"); if(!fp) { screen_message("Cannot open pipe"); @@ -1115,12 +1115,13 @@ levelstrings[nlevelstrings++]=import_string(p+1); } break; case '\'': if(!sol) { - sol=sqlite3_str_new(userdb); - sqlite3_str_appendchar(sol,3,0); // append level version (will be overwritten later) and flags + sol=open_memstream(&solution_data,&solution_length); + if(!sol) fatal("Allocation failed\n"); + fwrite("\0\0",1,3,sol); // append level version (will be overwritten later) and flags } p=strchr(buf,' '); if(p) { *p=0; p=import_numbers(p+1,&y,0); @@ -1128,11 +1129,11 @@ } else { y=1; } for(x=8;x<256;x++) { if(heromesh_key_names[x] && !strcmp(buf+1,heromesh_key_names[x])) { - sqlite3_str_appendchar(sol,y,x); + while(y-->0) encode_move(sol,x); break; } } if(x==256) goto bad; break; @@ -1152,12 +1153,11 @@ done: free(buf); if(!main_options['i']) pclose(fp); generation_number_inc=0; if(sol) { - solution_length=sqlite3_str_length(sol); - solution_data=sqlite3_str_finish(sol); + fclose(sol); if(!solution_data) fatal("Allocation failed"); } } static void new_level(void) {