Dev:Ref/Release Notes/2.40/Bug Fixes

From Blender Developer Wiki
Jump to: navigation, search

<section begin=2.40-Source code-Bug Fixes />

Bugfixes

With no objects in scene, press F (ALT+F) for faceselect crashed. Bugfix #2755
Bug #2751

Recurring issue, but also bug in 2.37/37a: OSA sample amount versus AO
sample amount conflict... if AO and OSA amounts were exact equal it gives
black spots. Solution not optimal yet... but at least looks good.
Still think it's useless to sample fewer than AO level 8 (64), but
nevertheless. :)
- 'Delete object' didn't set object pointers to NULL for Armature/Pose
constraints (old bug)
- OGL render (view3d header) had wrong first frame on anim render
- Ipo 'recording' mode had wrong playback speed
- Vertex-key mode now sticks to show 'active key', until frame change
Bugfix #2797

Editmesh SHIFT+F "Fill" used an unsigned char to count amount of selected
edges linking to vertices, but also subtracted... causing the char to
become 255. Gave crashes (or infinite loops) when using "Fill" on random
input of solid meshes.
Bugfix #2791

Apply deform without object active crashed (only when using pulldowns)
Bug fix #2790

Pressing Wkey with no object active crashed.
Bug fix #2774

Using linked library files with relative paths, didn't set the correct
relative root... so it only worked with files in the same directory.
ALso fixed the button-lock in material buttons, it didn't allow to see
which materials were linked to the mesh/object.
MetaBall editmode didn't send the DAG recalc event while transformed. :)
Meaning, it didn't do polygonizing while moving elements in edit mode.
Bug fix #2772

EditMesh undo didn't restore vertex colors! That slipped our attention for
almost a year... :)
Bugfix for #2768

Starting a Bake for SoftBody didn't initialize the animation system for the
first frame correctly, causing an initial unwanted softbody effect.
Bug fix #2763

Depgraph missed proper relation from one armature bone to another armature
bone.
Bug fix #2762

Quite harmless, but was lazy code...
When you choosed "Vertex Color Paint" material, the init_render_material()
also set the "Vertex color Light" option, because that flag was checked on
during render to detect vertex colors.
Now it has proper checks in render code.
Fix for bug #2747

Knife cut in edge selection mode can cause crashes, since it uses subdivide
which isn't edge-select aware yet.
Quickly patched it by making knife checking on vertex selection.
Fix "Replace Meshes" in radiosity to actually only replace Meshes, and not
also delete lamps, cameras and anything else that was selected in the
"Collect Meshes" phase.
- cleaned up 'version correction' a bit. There was code slowing down
current files even (armatures were evaluated all, even when not in
current layer, was added to make sure they get converted OK).
Send me old files that crash now! :)
- on reading older files with path-constraints, a fix had to be added.
- error "badd call to addqueue' found when using header-less window for
filewindow
#bug 2397: frame-duplicator using Constraint not evaluated.
Fix for a *very* nasty bug... somewhere in the ancient past - I tracked it
back to 1.4 - comparing pointers apparently gave warnings or errors... I
don't really have a memory of that. Could be the Irix compiler.

What it was used for is sorting edges in arrays or hash lists, like:

if( ((long)v1) > ((long)v2) )

long is defined to be pointer size, so that should work 32/64 bits, where
it not that the long cast makes the value SIGNED! :)

Ken Hughes discovered this... noting that when his system uses a calloc, the
returned pointer had an uncommon address making the long negative.
It was a very hard bug to track, since (apparently) most OS's have an address
space being still in the lower part of an long...

Anyhoo; I have removed a couple of (long) casts from pointer comparing now,
need to get compile feedback if that's compliant for all our OS's.
If so, quite a lot of such hacks have to be removed from our code, or make
them casting to an unsigned long...

This has been confirmed to fix bugs #2709 and #2710. Thanks Ken!
Bugfix for #2826

Initialize shadow buffer lamp accidentally altered the ob->obmat for the
lamp. Never showed up before until now (depgraph).
Bug fix #2799

Sequence effect "gamma cross" didn't work since 2.36. Caused by not
initialized gamma tables...
- Altered 'axismat' for PoseMode bone transform. Fix for bug #2769, bone
rotations using hotkey-constraints (R, Y, Y) didn't work well.
Fix in image.c: just an unitialized variable.
Bugfix #2836

Crash in Vertex-duplicator when there's an empty Mesh. Simply added check
for dm pointer. :)
Fix: outliner crash on deleting bones in editmode

Further cleaned up editmesh code to be warning free and to have a little
nicer style :)
Fix for bug #2848 This flushes selection upward in subdivide based on select mode.
So faces with all edges selected should now be selected as well.
Bugfix #2818

On importing a file (dxf for example), the active filename got set to the
imported filename, causing save-over to use that too. Tracked it down to
be a very old feature... better to remove this, doesn't work according
specs!
Fix for bug #2766: Shear shortcut broken
Bug fix #2856

Changing 'active material' in Editing Buttons didn't update preview in
in Material Buttons.
- Bug #2857: Spin didn't create nice consistant normals
- removed unnecessary call to where_is_object() in init-render phase.
- Added DAG_scene_sort() calls when objects were removed (join cases)
- When using texture fonts, the file window header didn't display OK
- Saving a file didn't set the 'wait cursor' anymore (oldie!)
Bugfix #2875

Removed old code that was used when the global undo still saved files. It
was restoring pointers in the UI based on names, which gave confusing
results when loading the quit.blend file (actually undobuffer).
Instead it should treat the quit.blend same as "Load without UI" option.
Work for fix of #2256 "something weird with some buttons":
Fix for bug #2859

Beautyfill didnt work in illustrated case, due to 1) face select 2) no
correct edges selected...
Bugfix #2871

Selecting in Mesh edit mode or in FaceSelect mode is tied, but setting
faces hidden was not tied. This caused hidden faces in edit mode to
become selected, with all associated disasters. :)
Now hiding faces in editmode and faceselect are tied too. Please note
that leaving faceselect mode will unhide always!
Two radiosity glitches, bugs #2872 #2881

- add new scene, "Full Copy", didn't copy radio settings
- switch scene didn't reset radiosity baking
(note that you can only do 1 radiosity scene in Blender, switch scene
will free the radiosity data)
Bug fix #2894

Using Lkey (select connected) in Armature editmode could crash, it didn't
correctly check for drawing non selectable items (have index -1).
Added the 4 new proportional editing modes also to the uv editor transform.
Eventually the uv editor should use the new transform code and get these
automatically, but until that's done this might fix bug #2920.
Very small size of arealights (0.001) could cause weird overflows/bands.
There was still one float component hanging around... saacos(). Made a
double version of it.

Reported by Shul. thnx!
bugfix #2931 crash if $HOME not set

unchecked pointer returned from BLI_gethome().
Removed strcasestr() with version as found on web, opensolaris. It had a
bug though! :)
For people interested: both lines with tolower() had to be added...
do_versions() for 2.37 was reading a library data pointer that wasn't set
yet. Crashed in windows...
Thanks Desoto for finding it!
Bugfix #2943

Render bug.
Alpha low or zero, Ztransp, didnt render with lamp halos over...
Note it still doesnt work for ray-transp!
- bug fix #2935, DAG update was not called on new boolean object
Lamp-halo & Ortho didn't render correct. Thanks Desoto! :)
MEM_alloc allocated in units of 8 for 32 bits systems, and units of 4 for
64 bits systems... weird bug. :)
A large collection of fixes from Ken Hughes including:
- corrections to constants
- parameter type checking
- correct use of METH_VARARGS vs METH_NOARGS
- return objects instead of strings in Scene.getChildren() as per doc.
- correct logical operators

Thanks, Ken!
bugfix: #2924 Bugs in api2_2x/Material.c
- BPy_Material_methods[] "setFilter" calls Material_setFresnelMirrFac()
- Material_setSpecSmooth() should be setting param[3], not param[2]

Contributed by Ken Hughes. Thanks!
Random() issues with rendering...

- AO and soft shadow AreaLight tables were generated without fixed seed,
causing animations to give unwanted amounts of noise.
- Made sure these tables now are calculated before render, with fixed seed
- Then found out the BLI_rand() has very bad seeding... it showed up as
patterns. After some experimenting, found a nice method using noise.c
hash tables. For compatibility with old code, named it BLI_srandom() to
use this next to the BLI_srand(). This follows libc rand() and random()
naming convention.
- Then of course threading should work... so made a BLI_thread_rand version
of the calls. Now supports up to 16 threads, comments added in .h and .c

Result is stable animation render with AO and soft shadow. But, please
test and feedback!
Bugfix #2977

Tweaked selection code for Manipulators in 'combo' mode, it gives
preference now to the scale/translate widgets over the rotate arcs. This
enables use of these widgets in ortho top/side views.
Bug fix #2788

in 3d window, nkey panel, click in middle of number button & press ESC
moved the 3d cursor to that location. The button was passing on its
event to the window event queue, which shouldn't be.
Fix for bug #2974:
Circle select in uv editor crashed when an image was assigned but not loaded.
Bugfix #2999. Nkey buttons had a limit for input of 1000.0. That's not
much... made it 10 times larger, to match the max zoom level.

Nevertheless; on our ancient todo is that we once should give number
buttons 2 limits. One for the actual min/max values, and one for the best
sliding experience (matching zoom level or distance for example).
bugfix: [ #3009 ] possible memory leak in Mathutils

fixed by patch [ #3013 ] patch for memleak in vector
Submitted By: Ken Hughes (khughes)
Bugfix #3040, the new 'roundbox' button disabled copy/paste values in
buttons. You could notice that for Constraint and Modifier panels.
Exclude only-shadow lamps to be rendered when the main render option
"shadow" is off.
Bugfix 3018
bug fix:
UV paint tool did not work with swapped mouse buttons in user prefs.
Bug fix #3036
Particle emittor parented to Bone in armature didnt update correct.

Bugfix #2971

Alpha error in unified render, causing mist and non-ztransp alpha and 'env'
materials not to render correct.
Bug #2930:

Fix Amiga IFF loading for little-endian platforms
Bug fix #3070
<blush>Missing "2*" caused AO tables to be only initialized half</blush>
Result was bad AO quality in render, and unpredictable brightness. This bug
happened in previous commit, when fixing random table issues.
Bug fix #3052

Syntax highlight in Text Window crashed with lines > 2000 chars. I now just
skip the highlighting code for these cases, it remains a bit weak code...

Bugfix #3041

Missing updates for Textured objects in 3d window, using copy buttons.
Bugfix #3077

Radiosity didn't add edges block, on "Replace Meshes". Caused wireframe
not to draw, but also crashes like for join().

Also: added patch that sets the drawflags in edges derived from the
ones set in faces. This ensures the conversion to be done correct.

TODO: this edges call also used in other areas in code, that has to be
catched and done differently.
Bugfix #3075

Wave Effect (and build etc) was being converted while the code later on
was reading existing modifiers (and unlinking the converted data).
Bugfix #3085

When you move the mouse, while dragging numbers in buttons (or sliding),
and release it over another button, the release event was passed on to that
button. It happened with Radiosity buttons for example.

Reason; buttons with return event 0 are passing on events to other buttons.
This is needed for LABEL or ROUNDBOX buttons, to prevent them blocking
events when there's another button inside.

Made sure all these number/slider buttons returning B_NOP now.
Bug report #3092

Excluded the 3D cursor from being clipped with the new ALT+B clipping.

Also added a refresh for the object that gets (Pkey) separated in mesh
editmode, might solve issue reported by Campbell.
Bugfix #2948

For using the Fkey (add face) editmesh tool:
prevented triangles being made that are partially a quad face already.

Tools in editmode don't like such situations (tria->quad for example), also
subsurf hates it. :)
Bugfix #2746

In Surface editmode, solid draw mode, curves are drawn in wire now
(where in invisible). Its a simple fix, it shouldn't give issues with
the Nurbana work. :)
Bug fix #3094

Playback of sequencer sound crashed in combination with dupliverted
Objects. (confirmed in osx only btw).

Found out there's old not-needed code in the update_for_newframe() call,
that was intended to do updates for Manipulators (calling countall()).
In countall(), the entire duplilists were generated over, just for
counting the totals.

First step was removing the countall from update_for_newframe, and added
a count_duplilist() call which doesn't generate the full duplilist. That
made Blender not crashing anymore, but gives "Error totblock", without
printing the block names even...

The weird thing also was that the crash showed severe memory corruption in
the malloc library, when combining audio scrubbing (SDL) and duplilists.

I now suspect there's a remaining issue with DerivedMesh, but for that I
need help from Daniel.
Various Transform bugfixes.

- Trackball rotate was missing the NoConstraints flag
- Zooming didn't recalculate the 2D center correctly
- Zooming in transform was sending event to the 3D window even when working on UVs.
(disabled when working on 
UVs for now, will need to send events to a 2D window handler eventually)
- In camera mode, when the selection was exactly on the camera, initgrabz was barfing,
fallback to 1.0 now, which gives ok results.
Action editor: drag with LMB did three redraws... causing slowdown. Bug
since 2.0 it seems.
Ftgl patch for texture fonts got lost... somehow. That made them much
slower than pixmap fonts. Test on buttons window CTRL+ALT+T timer shows it
goes down from 2500 to 100 on this commit. :)
Shaded drawmode, ogl preview render, does update for lights.
set object->recalc flag when we change object's loc, rot, etc.
fix for problems with frame change scene scriptlinks.
Suppressed another GL_FRONT drawing routine, causing potential slowdowns
for some configs. This was an old hack for sgi's, so I've put it behind an
ifdef for sgi and suns now.

Test if blender still works by switching screens, and check for the borders
between the blender area windows. These should draw all nice empty/black.
Possible fix for bug #3094 - use normal malloc/free for stuff that gets
alloced inside SDL threads.
Ipowindow header: Curve menu crashed when no curve was created yet.
Bugfix #3046

When using 3d window "unlocked" (own layer and own camera possible), the
dependency updates didn't work, these were only using Scene layers.
Bugfix #3138

Editbuttons "Centre" options didn't correctly use depgraph for linked data.
Bugfix #3133

- Rendering an image with Border didn't check for sizes smaller than 1
pixel yet.

Related to this code I found 2 other fixes:

- Themecolor set for drawing in Render Window was not restored correctly,
sometimes causing into wrong Panel (transparency) drawing.

- When rendering an image with Gauss, it now renders by default 1 pixel
extra, which gets stripped. This eliminates the "ugly" darker border
in images.
(Yes, let's make Mr. PixelCounter Goralczyk happy! :)
- #2781, reported by Ed Blake: crash on undo when there were active space handlers.
Space Handler script links belong to screen areas, which do not get saved on undo.
Thanks Ton for pointing out the function that restores ui pointers gone bad.

- Applied patch #2822 by Ken Hughes for bug #2647 ("Setting a Face UV"), reported by Campbell Barton.

- #3022, reported by Timothy Wakeham: "Blender.BGL.glDrawPixels crashes when drawing
more pixels then buffer size". Made glDrawPixels check buffer dimensions.

- #2882, reported by Campbell: crash in nmesh.getMaterials(arg == 0 or 1) when nmesh came from
GetRawFromMesh().Raw nmeshes are not linked to Blender meshes, so the method doesn't support
these options (getting mat info from the actual mesh) for it.

- #2817, reported by Tod Koeckeritz: Dir_Depth var was not being decremented in BPY_Menus.c,
causing dir depth limits to be reached prematurely.
- #2954, reported by Daniel Holtz: "Python scripts crash hard with valid windows paths". Blender.Load()
was not meant for background mode, now it's been update to support it, using BKE_read_file instead
of BIF_read_file in this case. Also found another issue with command line scripts using Blender.Load()
that could crash Blender: trying to free the Text when it wasn't available anymore (loading a new .blend
already removed it). There are still issues with one case, though, causing a crash on start
or "Memoryblock winopen: double free" at end, when running a script that is already a
Blender Text (only if the script calls Blender.Load, of course). Will investigate.
- #2897: reported by Timothy Wakeham: object.setMaterials was asking the length of a Python
list w/o confirming first if the passed obj was really a list.

Thanks all for the help and for being patient (long delay, again).
Bugfix #2650.

Calling ipo.delCurve() with a curve that's not been displayed in the
Ipo curve editor caused a segfault.
Bugfix #3141

Ending localview didn't correctly restore selection, so oops or outline
were not updated.

Bugfix #3137

In UV Faceselect, the button "Set vertex color" needed Mesh update flush.
Bugfixes for #3102, #3104

- Fix incorrect usage of PySequence_Fast_GET_ITEM()
- make EXPP_setFloatRange() convert its argument to float instead of short
Posemode, ALT+R,G,S didn't work always, this because SHIFT+mouse selecting
accidentally could unselect the object itself.

It can be that older saved files still show this issue, then just select
another object, and select the armature again. :)
Bugfix #3188

Enter Vpaint or Wpaint did not redraw headers of all 3d windows, so the
mode menu indicator didn't update.
Drivers cannot drive channels of own Object, added error warning for it. I
might allow this once, but it's a lot of new complexities then.
It also means you cannot drive one Bone with another Bone in same Pose.
- bug fix, paste clipboard on windows didn't free buffer
Bugfix #3164

Very rare; a bugreport with a fix patch! Coolness, thanks Bill Currie!
(Segfault due to using un-initialized displaylist in Boolean code)
Bugfix #3163

Materials; using "Stencil" option, didn't work properly for multiply, and
other related filters. This is a very old issue, but now I found the good
way to fix it! :)
- swapped MFace.flag and MFace.mode code; they were reversed (thanks, Cam)
- fixed bug in MFace_getFlags(): was accessing wrong field
Two very easy crash fixes, one more proper pointer check, and a check
for a division by zero. Sorry... but i can't stand such known issues to be
in an official build. :)
- Bugfix #3127: gives Python ability to do "reload()" on Blender Text scripts
(not really a bug, just adding a missing capability)
- Bugfix #3194: calling curve.appendNurb() with any number of float param
other than 4 or 5 caused segfault (thanks for catching, Cam)

- Bugfix #3202: ipo.addCurve() created curve but didn't add to the Ipo
(thanks, lguillaume). I think we need much more testing of the Ipo
module following Ton's refactoring.
Overflow was possible for vertex index numbers in deformgroups, causing
the table with bones in deform code not to work. Added a check for amount
of Bones. (Orange bug!)
Memory error 'end corrupt' reports for deform groups... can't find it yet,
but this code ensures the strcpy() is using BLI_strncpy now, and it uses
more clear names for the mallocs.
- Bugfix #3227: throw exception in NMesh if face data doesn't contain 3 or
4 vertices
fixing most of #3096
by 'eating' contol messages
still there is an issue on how transparent/opaque floating panels should be for messages
... and i am wondering if that should move to 'regular' buttons

Bugix #3200

DAG_object_flush_update() always used scene layers, causing updates to go
wrong with 3d windows with "Lock" off (allowing local layer and camera).
Bugfix #3210

Included a patch by Pablo Marrol! selecting with ALT+CTRL combos
didnt check if there was actually a Mesh in editmode.
Bugfix #3238

ALT+C on mesh without modifier crashed.

Elubie
Fix for correct handling of relative filenames.
Now relative filenames that are not below the .blend file
in the directory hierarchy can be used
Log:
FIX: BLI_makestringcode called with bad pointer mainl->curlib
Moved call to before blo_join_main where pointer gets killed.
Otherwise Blender crashed when appending a file and selecting
relative filenames.
-Bugfix #3207: ALT-C on a mesh with modifiers would cause memory corruption.
We make a copy of the mesh and perform operations on the new object using
mesh_create_derived_no_deform() for the new object instead of the
original.

Would be really nice if Daniel would look this over to see if it's really
fixed, or if I've just moved the problem somewhere else. :-) I'm leaving
the bug report open until the fixed is verified.
- Bugfix #3271: saveRenderedImage() was corrupting memory while trying to
build the filename (thanks for good bug report, Pablo)
Copy scene did not copy the markers... causing in memory errors on quit.
No real baddie, but still very good to fix!


Bugs

 Log:
 Copy scene did not copy the markers... causing in memory errors on quit.
 No real baddie, but still very good to fix!
 Log:
 Found a potential crash where NULL could be passed to vfont_get_data(),
 here's the fix. Maybe it fixes Andy's file :)
 
 Log:
 Fix: the 'draw name in camera view' now draws the view's active
 camera's name rather than the scene's, so it's not misleading
 when you have unlocked 3D views. (#3324)
 Log:
 Fix for item #3316 : make sure that BLI_make_file_string converts all
 slashes in the filenames to the system preferred direction.
 Leaving unix slashes caused the error in the Python module
 blender.Get('filename')
 Bugfix #3304
 
 Actually nice feature too: when using Scene "Set" option, that scene draws
 its transparent and x-ray stuff independent of the 'foreground' scene.
 That means that x-ray in a set will be always over the set objects, but
 stays behind the current scene.
 
 For transparent it works the same though... meaning that solid objects from
 the foreground scene will always draw over transparent from the "Set".
 
 Note; this only is true for the 3d window, or the OpenGL render, not for
 actual rendering of course.
 Bug #3298
 
 Unified render does not return a zbuffer, but when gauss render was used
 in combination with motion-blur, a buffer was accidentally created, one
 pixel to small even!
 
Log:
 Combined bugreport, bugfix and patch from Vidar Madsen.
 
 He noted that static particles don't work with force fields yet, and
 added a fix for it. This however didn't work for the depgraph yet, and
 didn't correct the static particle's local space to world coordinates for
 the fields. Nevertheless, while reviewing this small patch I thought it
 would be fun to add now.
 
 So: static particles now update realtime on forcefield relations. Warning
 for potential slowdowns! Also note that work on the real particle patch
 still has to be done... something I really will do, but in time. To get
 particles correctly integrated in the animation system, quite some new
 development has to be done still.
 
 Fix for #3316: do not convert slashes in the relname in BLI_make_file_string
 Also fixed signature to const char* to indicate which parameters can be changed
 to make it a bit safer, because constant strings are passed into this function
 and changing them caused a crash.
 Fix #3256
 
 DXF: when an error message occurs during read, the main call returned
 without clearing the used global vars... causing crash on calling again.
 
 ALso: added warning when trying to assign a taper or bevel using Object
 itself. (report from opengl tracker :)
 Bugfix #3249
 
 Error in BLI_array_randomize(), an unused call in Blender until the
 Build Modifier was added. It did a weird modulus I don't really grasp...
 somehow that caused the bug (create a corrupt mesh). But why? Dunno...
 Log:
 * Fixed a little problem when using both F* keys and header buttons
 to change buttons tabs wouldn't switch quite right.
 Bugfix #3370
 
 Border select on a Meta strip in Sequencer didn't work. Seems to be a year
 zero bug :)
 Log:
 This is the famous proverbal example of someone trying to get a 4 legged
 table stable... you keep correcting leg sizes until no table is left
 anymore! :)
 
 This commit restores the displacement direction from 2.37a code, which was
 negated 5 months ago to fix a change in renderconverter.c, but somehow is
 not needed anymore. The regression displacement file now renders OK again.
 Fix #3382
 
 Alt+D on a Camera or Lattice did not create a linked copy. This was an
 ancient convention from the dark ages (1995) still. :)
 Log:
 * Fixed an old, old, old problem where the top camera arrows
 couldn't be seen in a side on view because they had no wireframe.
 Log:
 A year-zero bug, and actually another issue with auto-handles for Ipo
 curves. On sharp 'peaking' curves the handle was calculated
 using both X and Y distance. This could result in overshooting.
 
 New code only evaluates the X distance, resulting in much more moderate
 sized handles.
 

Bugs

 Bugfix #3346
 
 Decimate modifier wasn't resistant to decimating below 3 vertices. It now
 detects so, and doesn't add a face or edges then.
 
 Bugfix #2841
 
 Ancient issue with Image bumpmap & orientation... this report was about
 UV textures, which flipped bump direction when UV coordinates rotate.
 So... time to dive deeper into it, and I found a very bad old construction
 in the way image textures handled bump normals. Instead of using the
 correct dx,dy vectors it was calculating the boundbox for it, and applied
 it as such (loosing negative direction for the dx or dy that way).
 
 Anyhoo! To make a long story short; the weird "correct Nor Map" option
 now can be removed... but requires careful testing!
 
 Here's renders from file I got from env, 239 means old and 240 is this cvs.
 
 http://www.blender.org/bf/dino239.jpg
 http://www.blender.org/bf/dino240.jpg
 
 http://www.blender.org/bf/dino239a.jpg
 http://www.blender.org/bf/dino240a.jpg
 
 Note the much finer detail, and the more consistant normals direction.
 No, go render testing dudes!
 Bugfix #3463
 
 Very ancient bug in boxfilter for image texture popped up with new code
 for correct bumpmapping. Caused texture type "Extend" not to work when
 using for bump.
 
 Log:
 -- Bugfix #3139: Blender.Library.Open() was changing current .blend
    filename.  We now save and restore file before opening library.
 Bugfix #3526
 
 Division with zero caused wrong pixels to be rendered with Ortho camera.
 Log:
 -- Bugfix #3564: Texture.getImage() always returned None for Env maps, even if
    an image was assigned.
 Log:
 Fix: reading library files with option "Relative Paths" set, whilst library
 was read already AND relative, caused the path for libraries to corrupt...
 Bugfix #3556
 
 Unified render didn't treat the alpha for raytraced transparent correct...
 unified is based on layering with alpha, so it cannot support alpha in
 raytraced transparent correctly.
 Bug #3562
 
 Strips with a repeat fraction (like 3.51) should also "hold" on the
 fraction of .51 when indicated so.
 Patch provided by Roland Hess, but cleaned up (exisiting) mess a bit too.
 Log:
 -- Bugfix #3566: Entering very large numbers for scaling/rotation/translation
    cause a write past end of string buffers in outputNumInput().  Patched to
    make large numbers (+-1.0e+10) display in scientific notation format.
 
 Log:
 With the introduction of fixed edge arrays in Mesh, the options to render
 wire frame became very limited... the information of faces (vertex colors
 and UV reside there) got lost.
 Solved it nicely with creating a large index table, and use bsearch() to
 get quickly the matching information.
 
 Then I noticed the render code needed fixes too for wire, no proper UV's
 were calculated over the wire edge.
 Log:
 Bugfix #3552
 
 Another ancient bug in unified render... the lamphalo wasn't filled in
 correctly over sky, especially when the background had halos (or stars).
 
 Only shows when using filters other than box though.
 Bugfix #3579
 
 Saving envmap, with a filter set (like gauss) and with a percentage set
 (like 50%), saved envmaps with empty pixels inbetween the sub images.


 Log:
 Three fixes;
 
 - On file reading, a check is added to see if a Pose has channels to
   missing bones. Poses are supposed to match an Armature completely.
   (Thanks for crash file, Johnny!... but how did you do it!)
 
 - Own collection: added depsgraph update on setting all layers (with the
   ACCENTGRAVEKEY). This also could potentially crash with modifiers
 
 - Renamed Xkey menu in NLA to more properly tell what it does. :)
 #3592
 
 Normal rendering; adding gamma corrected halo could cause NaN's because
 of a negative sqrt().
 
 #3598
 
 Uninitialized 'alpha' flag in Image texture could cause render errors.
 Didn't show in OSX though... (stupid system here inits stack to zero).
 But, Ken Hughes found this, so all credits are for him!
 Bugfix #3608
 
 More bump issues... Env made very nice examples, but all of it quite nasty
 to solve.
 Three improvements I found nevertheless:
 
 - bug in mipmap code for bump gave errors in one derivate, causing aliasing
 - when Image texture option "Clip" was used, the imagetexture function
   returned wrong value, causing the caller to create own normal based on
   color (zero!).
 - Mipmapped bump now also interpolates the samples (never did this...)


OS X Nvidia work around

 Nvidia workarounds
 
 - partially working workaround for nvidia bug on Os X 10.4.3
 - brought back the raster ops hack for GT6800 with proper driver version
   check so that text works both on Os X 10.4.3 and older systems.
   this last patch was given by Kent Miller from Apple
 Log:
 I hesitate to call it a bugfix... but it's a removal of a very ancient
 (2001) hack that enforced opening renderwindows smaller than screen size.
 
 The notes I could find referred to testing old 3d cards, which failed to
 give graphics memory for large windows. Another note was an issue on OSX,
 where the topbar and windowbar gets hidden otherwise.
 That latter case I corrected now.
 
 Will organize good testing for this, if there's issues, will uncommit :)

<section end=2.40-Source code-Bug Fixes />