The SDClass class makes a reference to "SD.card" instead of just "card". SD is a global instance of SDClass.
This prevents any other instance of SDClass from functioning correctly.
The fix also allows SDClass to be used with an SD card which is removed and replaced, whereas previously, using the global instance SD did not allow this due to the limitation of begin() which cannot be called more than once.
All the while() loops that check for the SPI transfer to be complete have the
semi-colon immediately after the closing parenthesis. This both causes a
compiler warning of "warning: suggest a space before ';' or explicit braces
around empty body in 'while' statement", and is considered a less-than-ideal
programming practice. This patch breaks the semi-colon on to the next line,
both eliminating the compiler error and making the code more readable.
In all probability the test should be moved into a macro or a inlineable
sub-routine.