[CALC] Fix copy command when output is NaN (#7496)
authorCarlo Bramini <carlo_bramini@users.sourceforge.net>
Sun, 10 Nov 2024 16:01:34 +0000 (17:01 +0100)
committerGitHub <noreply@github.com>
Sun, 10 Nov 2024 16:01:34 +0000 (17:01 +0100)
CORE-19745

base/applications/calc/winmain.c

index b2ab16c..54025b6 100644 (file)
@@ -1015,10 +1015,16 @@ static void handle_copy_command(HWND hWnd)
     TCHAR display[MAX_CALC_SIZE];
     UINT  n;
 
+    // Read current text from output display
     n = GetDlgItemText(hWnd, IDC_TEXT_OUTPUT, display, SIZEOF(display));
 
-    if (calc.base == IDC_RADIO_DEC && _tcschr(calc.buffer, _T('.')) == NULL)
-        display[n - calc.sDecimal_len] = _T('\0');
+    // Check if result is a true number
+    if (!calc.is_nan)
+    {
+        // Remove trailing decimal point if no decimal digits exist
+        if (calc.base == IDC_RADIO_DEC && _tcschr(calc.buffer, _T('.')) == NULL)
+            display[n - calc.sDecimal_len] = _T('\0');
+    }
 
     CopyMemToClipboard(display);
 }