{"push_id":1622585765,"size":51,"distinct_size":1,"ref":"refs/heads/envelope-fixes","head":"f22e8ed25cafbad3c0a123b2fef0a2d216c76faa","before":"5e3616a82dde77af93c66ddb9f5d3afa987b09d5","commits":[{"sha":"3bb04245c5e052a1f3c5e75a1e34bc06a6df9dcc","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Strong exception safety in all uses of XMLFileWriter...\n\n... Strong, meaning that the file at the specified path is created or modified\nonly if all write operations complete without exceptions, barring one very\nunlikely possibility that a final file rename fails, but even in that case the\noutput is successfully written to some path.\n\nThis commit does not add throws, but changes the type thrown to a subclass of\nAudacityException, so that GuardedCall will cause the user to see an error\ndialog in all cases.\n\nDuplicated logic for making temporary files and backups is now all in one\nplace, the class XMLWriter.\n\nThere may be more new GuardedCalls than necessary -- the catch-all for the\nevent loop, AudacityApp::OnExceptionInMainLoop, might be trusted instead in\nsome cases --  but they are sufficient.","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/3bb04245c5e052a1f3c5e75a1e34bc06a6df9dcc"},{"sha":"ce7b467759eb62157620863fdfdcfbddeecbd367","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in all uses of XML writing functions","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/ce7b467759eb62157620863fdfdcfbddeecbd367"},{"sha":"751eddce3f5c7b109a9f53cdee59597c41497a12","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"fix the XML writer -- don't throw if target path did not previously exist.","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/751eddce3f5c7b109a9f53cdee59597c41497a12"},{"sha":"e72ca0fd6e7d8aa6ce2f464609daf353cfac42f4","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Reviewed uses of release(); prefer Destroy_ptr to hold window objects","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/e72ca0fd6e7d8aa6ce2f464609daf353cfac42f4"},{"sha":"3140bb28bf4bfed37314c315114e7e1d9fb2f7e5","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Commit resampling of tracks to undo history one track at a time","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/3140bb28bf4bfed37314c315114e7e1d9fb2f7e5"},{"sha":"0e5c1d896e05c109bff63ba43efebb7738caeb7d","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"If exception in cut/copy, leave clipboard clear (no partial results)","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/0e5c1d896e05c109bff63ba43efebb7738caeb7d"},{"sha":"fb5a5661cb2034fc6811d551c436db9bcae6092e","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Rearrange a few things in time shift button up...\n\n... to reclaim some memory earlier, before possible throws","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/fb5a5661cb2034fc6811d551c436db9bcae6092e"},{"sha":"a65e43bc81e70f8ed272f9fd4c0f04d7eaa39768","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"TimerRecordDialog:  comment why nothing need be done for exceptions","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/a65e43bc81e70f8ed272f9fd4c0f04d7eaa39768"},{"sha":"890cb72426347d65bb02b35a0b0048b2b4c2f53a","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: BatchCommands","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/890cb72426347d65bb02b35a0b0048b2b4c2f53a"},{"sha":"83b08a6a731986f7695a4676d5eb908accf22c7e","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: ondemand","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/83b08a6a731986f7695a4676d5eb908accf22c7e"},{"sha":"32898767fc7acd024012649b54084d3152d3abd1","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety for Edit toolbar button presses","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/32898767fc7acd024012649b54084d3152d3abd1"},{"sha":"6851a1b8f78bac7c33d0d11b209c00be3b0bf124","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: CommandManager","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/6851a1b8f78bac7c33d0d11b209c00be3b0bf124"},{"sha":"35c8c8f1935006e96ee17eb4664465f359d5051b","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: batch processing","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/35c8c8f1935006e96ee17eb4664465f359d5051b"},{"sha":"1829491f4b3e0175aa3b853bf227cebb3cb202df","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: importing functions...\n\n... Side effects on preferences may persist even after errors.","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/1829491f4b3e0175aa3b853bf227cebb3cb202df"},{"sha":"4fd39d459bcee9117fe433b9da5261ca5bfe4c4a","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Complete the RAII in an import plugin","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/4fd39d459bcee9117fe433b9da5261ca5bfe4c4a"},{"sha":"6e0b7dc315af915ca899a3729ef72b59e59aaa15","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: general exporting routines","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/6e0b7dc315af915ca899a3729ef72b59e59aaa15"},{"sha":"b63eb634a626979ce15d33c2fb50b539485c7434","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: subclasses of ExportPlugin; and more error checking","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/b63eb634a626979ce15d33c2fb50b539485c7434"},{"sha":"84be5c374d425a9c57aedf9ad39459902c64cca6","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Hoist, and delay, the saving of import tag while opening the file...\n\n... so that AudacityProject::AudacityProject no longer has a path in the\nstatic call graph that reaches block file write operations that might throw.\n\nSo it is easier to prove that other functions, calling that, don't throw.\n\nAlso delay the possibly thowing save of the import until after certain other\nsteps in the file opening procedure.","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/84be5c374d425a9c57aedf9ad39459902c64cca6"},{"sha":"b5674fd6cf9e9d3ea087ad5fe3ba84464841fac3","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: saving of projects","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/b5674fd6cf9e9d3ea087ad5fe3ba84464841fac3"},{"sha":"2c127203bf437916c1af29a6822e04baef55a6ad","author":{"name":"Paul Licameli","email":"01af8b12abb2385cc5f4dd05b2ddbd8f4c693a90@audacityteam.org"},"message":"Exception safety in: locking of BlockFile for read","distinct":false,"url":"https://api.github.com/repos/Paul-Licameli/audacity/commits/2c127203bf437916c1af29a6822e04baef55a6ad"}]}
{"actor":{"display_login":"Paul-Licameli"}}