changeset 270:f38401456ffa draft

fix problem sending the last cent with sub-cent fractional change git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@151 1a98c847-1fd6-4fd8-948a-caf3550aa51b
author s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
date Fri, 10 Sep 2010 16:58:59 +0000
parents ae8c8d8f84bf
children 42ff6f05dc5b
files main.cpp serialize.h ui.cpp
diffstat 3 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/main.cpp
+++ b/main.cpp
@@ -2774,8 +2774,8 @@
     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 @@
                     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 @@
                         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
--- a/serialize.h
+++ b/serialize.h
@@ -23,7 +23,7 @@
 static const unsigned int MAX_SIZE = 0x02000000;
 
 static const int VERSION = 312;
-static const char* pszSubVer = ".2";
+static const char* pszSubVer = ".3";
 
 
 
--- a/ui.cpp
+++ b/ui.cpp
@@ -184,7 +184,7 @@
 
 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, "