kwsch / PKHeX

Pokémon Save File Editor
https://projectpokemon.org/pkhex/
Other
3.71k stars 696 forks source link

Program crashes when adding/removing/editing bag items only in Pokemon Emerald #4320

Closed Aeledbetter closed 3 months ago

Aeledbetter commented 3 months ago

Describe the bug When attempting to edit/add any item and clicking save in the bag section in Pokemon Emerald (no other games are affected), the program throws this exception and crashes completely.

Exception Details: System.ArgumentException: Destination is too short. (Parameter 'destination') at PKHeX.Core.SAV3.CopyChangesFrom(SaveFile sav) at PKHeX.WinForms.SAV_Inventory.B_Save_Click(Object sender, EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(HWND hWnd, MessageId msg, WPARAM wparam, LPARAM lparam)

Loaded Assemblies:

System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Private.CoreLib.dll

PKHeX, Version=24.7.3.0, Culture=neutral, PublicKeyToken=null C:\Users\Calbe\AppData\Local\Temp.net\PKHeX\0JCk+1Xx7NGwnsTAIDqMbFmcVZOu_zM=\PKHeX.dll

System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Runtime.dll

System.Windows.Forms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\System.Windows.Forms.dll

System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.ComponentModel.Primitives.dll

System.Windows.Forms.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\System.Windows.Forms.Primitives.dll

System.Drawing.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Drawing.Primitives.dll

System.Collections.Specialized, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Collections.Specialized.dll

System.Threading.Thread, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Threading.Thread.dll

System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Collections.dll

System.Runtime.InteropServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Runtime.InteropServices.dll

System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Threading.dll

System.Diagnostics.TraceSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Diagnostics.TraceSource.dll

System.Drawing.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\System.Drawing.Common.dll

Microsoft.Win32.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\Microsoft.Win32.Primitives.dll

System.ComponentModel.EventBasedAsync, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.ComponentModel.EventBasedAsync.dll

Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\Accessibility.dll

System.Resources.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\System.Resources.Extensions.dll

System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Memory.dll

System.Drawing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\System.Drawing.dll

System.Numerics.Vectors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Numerics.Vectors.dll

PKHeX.Core, Version=24.7.3.0, Culture=neutral, PublicKeyToken=null C:\Users\Calbe\AppData\Local\Temp.net\PKHeX\0JCk+1Xx7NGwnsTAIDqMbFmcVZOu_zM=\PKHeX.Core.dll

System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Linq.dll

System.Collections.Concurrent, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Collections.Concurrent.dll

Microsoft.Win32.SystemEvents, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\Microsoft.Win32.SystemEvents.dll

System.Collections.NonGeneric, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Collections.NonGeneric.dll

System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Text.Json.dll

System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Text.Encodings.Web.dll

System.Text.Encoding.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Text.Encoding.Extensions.dll

System.Runtime.Intrinsics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Runtime.Intrinsics.dll

PKHeX.Drawing.PokeSprite, Version=24.7.3.0, Culture=neutral, PublicKeyToken=null C:\Users\Calbe\AppData\Local\Temp.net\PKHeX\0JCk+1Xx7NGwnsTAIDqMbFmcVZOu_zM=\PKHeX.Drawing.PokeSprite.dll

System.ComponentModel.TypeConverter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.ComponentModel.TypeConverter.dll

System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.ComponentModel.dll

System.ObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.ObjectModel.dll

System.Private.Uri, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Private.Uri.dll

System.Runtime.Loader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Runtime.Loader.dll

System.Windows.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.7\System.Windows.Extensions.dll

System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Net.Http.dll

System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Net.Primitives.dll

System.Diagnostics.Tracing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Diagnostics.Tracing.dll

System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Diagnostics.DiagnosticSource.dll

System.Net.Security, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Net.Security.dll

System.Security.Cryptography, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Security.Cryptography.dll

PKHeX.Drawing, Version=24.7.3.0, Culture=neutral, PublicKeyToken=null C:\Users\Calbe\AppData\Local\Temp.net\PKHeX\0JCk+1Xx7NGwnsTAIDqMbFmcVZOu_zM=\PKHeX.Drawing.dll

PKHeX.Drawing.Misc, Version=24.7.3.0, Culture=neutral, PublicKeyToken=null C:\Users\Calbe\AppData\Local\Temp.net\PKHeX\0JCk+1Xx7NGwnsTAIDqMbFmcVZOu_zM=\PKHeX.Drawing.Misc.dll

System.Net.Sockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Net.Sockets.dll

System.Threading.Overlapped, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Threading.Overlapped.dll

System.Net.NameResolution, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Net.NameResolution.dll

System.Threading.ThreadPool, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Threading.ThreadPool.dll

System.Security.Principal.Windows, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Security.Principal.Windows.dll

System.Security.Claims, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Security.Claims.dll

System.Text.RegularExpressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Text.RegularExpressions.dll

System.Runtime.Serialization.Formatters, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Runtime.Serialization.Formatters.dll

System.Diagnostics.StackTrace, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Diagnostics.StackTrace.dll

System.Reflection.Metadata, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Reflection.Metadata.dll

System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.7\System.Collections.Immutable.dll


User Message: An error occurred in PKHeX. Please report this error to the PKHeX author.

To Reproduce Steps to reproduce the behavior:

  1. Go to bag
  2. Add/remove/edit items
  3. Click Save
  4. See error

Expected behavior The bag window should close and you should be left with the main window of PKHeX.

Lusamine commented 3 months ago

I'm not able to replicate on my Emerald saves. Tried on both development and the release PKHeX. Can you explain what you're doing that's different from what I'm doing here?

bag

kwsch commented 3 months ago

Already fixed; issue was with emulators appending RTC data at the end of the save file and PKHeX not handling it correctly on creating temporary copies of the save file: https://github.com/kwsch/PKHeX/commit/1dcda6d2e8791e8b06983be13cff10c5d362cc78