On Thu, Feb 27, 2020 at 9:13 AM Kaushal Modi <kaushal.modi@gmail.com> wrote:
The regression is caused by https://code.orgmode.org/bzg/org-mode/commit/6b2a7cb20b357e730de151522fe4204c96615f98 or the later commit that changes `org-babel--string-to-number'.

Using this function redefinition with additional debug messages:

(defun org-babel--string-to-number (string)
  "If STRING represents a number return its value.
Otherwise return nil."
  (message "DBG: string: %S" string)
  (unless (string-match-p "\\s-" (org-trim string))
    (let ((interned-string (ignore-errors (read string))))
      (when (numberp interned-string)
        (message "DBG: interned string: %S" interned-string)
interned-string))))

I get:

DBG: string: "1,3-5"
DBG: interned string: 1

So that ",3-5" piece of information is lost.

To be more specific, here is the call order:

org-babel-parse-header-arguments -> org-babel-read -> org-babel--string-to-number

org-babel-read returns the string as-is if org-babel--string-to-number returns nil.

*The regression is that earlier (org-babel--string-to-number "1,3-5") used to return nil, but now it returns 1.*

I think that it should return a number only if 100% of the input string represents a number. In the case of "1,3-5", it makes sense for it to still return nil, so that org-babel-read does not throw away the ",3-5" piece of information.