fix problem sending the last cent with sub-cent fractional change
authors_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
Fri, 10 Sep 2010 16:58:59 +0000 (16:58 +0000)
committers_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
Fri, 10 Sep 2010 16:58:59 +0000 (16:58 +0000)
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@151 1a98c847-1fd6-4fd8-948a-caf3550aa51b

main.cpp
serialize.h
ui.cpp

index e3c4414..3919d7e 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -2774,8 +2774,8 @@ void CallCPUID(int in, int& aret, int& cret)
     asm (
         "mov %2, %%eax; " // in into eax
         "cpuid;"
-        "mov %%eax, %0;" // eax into ret
-        "mov %%ecx, %1;" // eax into ret
+        "mov %%eax, %0;" // eax into a
+        "mov %%ecx, %1;" // eax into c
         :"=r"(a),"=r"(c) /* output */
         :"r"(in) /* input */
         :"%eax","%ecx" /* clobbered register */
@@ -3311,7 +3311,8 @@ bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CK
                     wtxNew.vout.push_back(CTxOut(nValueOut, scriptPubKey));
 
                 // Fill a vout back to self with any change
-                if (nValueIn > nTotalValue)
+                int64 nChange = nValueIn - nTotalValue;
+                if (nChange >= CENT)
                 {
                     // Note: We use a new key here to keep it from being obvious which side is the change.
                     //  The drawback is that by not reusing a previous key, the change may be lost if a
@@ -3330,7 +3331,7 @@ bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CK
                         scriptChange.SetBitcoinAddress(keyRet.GetPubKey());
                     else
                         scriptChange << keyRet.GetPubKey() << OP_CHECKSIG;
-                    wtxNew.vout.push_back(CTxOut(nValueIn - nTotalValue, scriptChange));
+                    wtxNew.vout.push_back(CTxOut(nChange, scriptChange));
                 }
 
                 // Fill a vout to the payee
index 2b88d35..712d6c5 100644 (file)
@@ -23,7 +23,7 @@ class CAutoFile;
 static const unsigned int MAX_SIZE = 0x02000000;
 
 static const int VERSION = 312;
-static const char* pszSubVer = ".2";
+static const char* pszSubVer = ".3";
 
 
 
diff --git a/ui.cpp b/ui.cpp
index 4d4e846..7916f67 100644 (file)
--- a/ui.cpp
+++ b/ui.cpp
@@ -184,7 +184,7 @@ int ThreadSafeMessageBox(const string& message, const string& caption, int style
 
 bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent)
 {
-    if (nFeeRequired == 0 || fDaemon)
+    if (nFeeRequired < CENT || fDaemon)
         return true;
     string strMessage = strprintf(
         _("This transaction is over the size limit.  You can still send it for a fee of %s, "