Synfig not allowing save

Hi,

I am learning Synfig - Looks cool(can’t wait for the next version to come out, it looks even better!).
I am trying to make a relatively short cartoon animation, and I can’t save it.

When I try, it gives me the following error:
“[color=red]Unable to save to ‘(path)’”

The console looking window outputs the following line:
“[color=red]error: synfig: :save_canvas(): Unable to rename file to correct filename, errno=2”

I realize that this was supposed to be a solved bug, but It still happens for me.
I created the folder for this project, so It shouldn’t be because of administrative problems.

Thanks for reading,

-CAA14

P.S. Is there are place to share Simple synfig animations and get feedback? If so I might post some of my first one, if I ever get the program working.

Which version of Synfig are you using and on which system?
Do you have write permission on the folder you are trying to save in?

Hello, and thanks for the quick reply.

I am on Windows 8 64 bit, and I downloaded the 0.64.1-64 version.

As far as I know. I never need to do anything to access it.

-CAA14

Hi CAA14,
The message: “Unable to save to ‘(path)’” is that really?
Maybe it is something like:
“Unable to save to ‘C:/Myfolder/foo/bar/myanimation.sifz’”?

It is weird that it doesn’t show the path you saved to.

The relevant part of the code where the error is generated (and further propagated) is this:

#ifdef _WIN32
		// On Win32 platforms, rename() has bad behavior. work around it.
		char old_file[80]="sif.XXXXXXXX";
		mktemp(old_file);
		rename(filename.c_str(),old_file);
		if(rename(tmp_filename.c_str(),filename.c_str())!=0)
		{
			rename(old_file,tmp_filename.c_str());
			synfig::error("synfig::save_canvas(): Unable to rename file to correct filename, errno=%d",errno);
			return false;
		}
		remove(old_file);
#else

Maybe some of the mktemp or rename functions has different behavior on windows 8.

This might help:
securecoding.cert.org/confl … 9+function
-G

Hello,

No, ‘(path)’ is just representing a real path, like you posted above. It does print the path. :wink:

Okay… So, it looks like I need to try and fix it myself then?
I am a programmer-in-training, but I am not familiar with Synfig. What language is it written in?
Where is that line of code?

Thanks again,

-CAA14

Synfig is written in C++ and Synfig Studio uses Gtk/Gtkmm toolkit.

Here:
github.com/synfig/synfig/blob/0 … s.cpp#L995

This is the story:
Synfig (and Synfig Studio) are made using GNU autotools. This forces to use a script to build the binaries from the source code unless you’re a complete suicide. Build script uses a Cygwin - MinGW toolchain to run the autotools.

In Windows, current master (unstable) branch build script is broken (not sorted out the latest changes) so, to give you a solution I tried to identify the problem on the current official released branch (0.64.1). It turns that the build script is broken too on my 32 bits Windows XP computer (it is complaining when building a third party library).

Apart of that, Windows 8 probably would differ so far from Windows XP and so we cannot assure if the patch would work on Windows 8 unless we directly compile it on Windows 8, what would be difficult until we own one license.

In master branch, the relevant code is moved to other place:
github.com/synfig/synfig/blob/m … e.cpp#L110

That is basically the same code except the part of create a random named new file.

In this situation, the best thing to do is to wait until the master branch is buildable in Windows and then patch it to make usable in Windows 8.

I exposed where I think could be the problem to let someone with Windows 7 or 8 to make the effort.

Any other suggestion is welcome.
-G

Hi,

Wow, I am going to have to pass. I want to help, but:

  • I am still in the learning stage of programming, and have never made a program before(A full, professional one that is).
  • I have no experience in C++.

I have never done a program alone, and certainly not with all these resources coming from so many places. :frowning:
I need to break into it a bit more before trying to repair a huge program like this, LOL.

Thanks though, I guess I cannot use it.

-CAA14

learning to code by coding.