emacs-28.2 -Q -nw
C-x ( x C-u C-x )
The C-u C-x ) should complete the macro definition and then execute
the macro three times, making the buffer contents "xxxx". Instead,
the error "Wrong type argument: fixnump, (4)" occurs.
(Changing "C-u" to "C-u 4" gives the expected result.)
The "P" in the interactive declaration of kmacro-end-macro should be a
"p".
Looking at all eleven "P" in kmacro.el, I think four of them should be
"p": kmacro-call-ring-2nd, kmacro-call-ring-2nd-repeat,
kmacro-end-macro, and kmacro-end-and-call-macro.
Alternatively, if the meaning of a bare C-u argument is being reserved
for some future feature, then it should be explicitly mentioned in the
documentation that C-u and C-u 4 are treated differently. As the
manual says:
A few commands treat a plain ‘C-u’ differently from an ordinary
argument. A few others may treat an argument of just a minus sign
differently from an argument of −1. These unusual cases are described
when they come up; they exist to make an individual command more
convenient, and they are documented in that command’s documentation
string.