Mathieu

if your image is running and your tests are green then we should be able to recover the decompiled version.



I did some testings and I found a way to reproduce what I experienced :
If you manually rename an image without renaming the .changes you cannot browse the code inside Nautilus without getting errors. However, you can use the finder just fine to find any method. These methods are decompiled methods (with variable names in t1 t2 etc.) but you can modify them without getting errors. Then you can save your image and it works fine.
Now if you rename the image to the name it had in the first place you can use it properly but the method you modified in between will be broken at some point.

This is normal:
������ the image is executing bytecodes and it uses the source files (changes) only for us the human ie when we open a tool that requires showing text.
������ when we do so if the sources is not available, the system decompile the bytecodes and present to us a version based on bytecodes.

Stef

But to be honest, even if it kinds of reproduce my problem I am not sure this is what i did. Maybe I manually renamed the image, that's definitely possible, but i don't remember re-renaming it to its prior name. Moreover, when doing so you end up with a new .changes file which is very small and has the source code of the methods you modified and I don't have any small .changes file.

I am still quite unsure at this point.

2015-07-06 10:36 GMT+02:00 Nicolai Hess <nicolaihess@web.de>:


2015-07-06 9:55 GMT+02:00 Matthieu Lacaton <matthieu.lacaton@gmail.com>:
Hello,

I would just like to report something that happened to me today.

As I was working on a project, I tried inserting an instance variable to one of my classes.
Starting from this moment something became very weird. First, some subclasses were not listed as subclasses anymore, then I realised during the execution that allocating my new instance variable was actually modifying another instance variable.

I tried digging up a bit and I found out that many of my methods were a complete mess.
When browsing with Nautilus the title of the method was for example: "addProperty:key:". However the corpse of the method was totally random with something like that for example:
"ient;
������ ������ width: 1.
������ graphic strokeStyle: _strokeStyle"

So, reportedly, the name of the method was "ient;" ...

Basically I had many methods where the source code was just random chunks of other methods.

The funnier thing is that everything worked perfectly fine during execution.

I tried to look at different backup images I had to see when everything began to go wrong and I realised I had been working with broken source code for about a week.

What image version did you use?

��

So if I understand correctly, I probably messed up with the .changes file (I don't remembr how but maybe I copied the .image without the .changes or renamed the .image or i don't know).
And now the compiled code is okay but the source code is lost so everything is working fine until the system tries to recompile everything ?

Now my question is : is there a way to fix the issue ? I tried exporting the package to a .mcz but I had bugs everywhere. I imported the old working package to an .mcz and tried browsing the differences with the broken one just to manually get back eveything I changed during this week. But I couldn't cause there were bugs everytime I tried to browse the changes. Basically, are all my changes definitely lost or is there a way to get it back somehow (at least the raw source code) ?

Maybe you can iterator over all methods decompile, and save as new code?
Maybe you can open the image without the changes file and try to create a package or file out the package?
��

I know that I fucked up and this is my fault but it would have been nice if something (anything) told me earlier that I did something wrong. I've been adding / modifying lots of methods and even executing the program for a week now and absolutely nothing told me that something was wrong until I tried adding an instance variable.

No, not your fault, this should not happen. The changes file is for "recover if you messed up the image". If the changes file gets corrupted, then this is a serious bug.
��

I am in a situation where I actually wrote and "saved" code and now it seems lost... that's frustrating :(

Thanks,

Matthieu