As a 2-minute looking over the definition of buff-menu.el and over the definition of `19.5 Operating on Several Buffers`, I think I need to check whether the buffer was modified, and in case that it was, I insert '*' on the 3rd column, otherwise insert space.

I remember this problem repeating for many years, but today it disturbed me again , and this is why I mailed.

In fact, the patch of the function "Buffer-menu-unmark" will look something like:

if "the 3rd column is S (from Save)" then
      (if (buffer-modified-p current-buffer-from-the-point) has-modified-flag-on then
           insert "*" else
           insert " ".

This is the complete logic of the patch . Correct ?