@redheadedrod:
You are right but please pay attention to my reasons for naming it a core bug and for requesting to add that line:
1- There are some functions
in the core that you should add the prefix before using them like this:
$out = func1($db->prefix("mytable"));
but there are others
again in the core that you should not add the prefix before using them like this:
$out = func2("mytable");
because the func2 is like this:
function func2($tablename)
{
$tablename = $db->prefix($tablename);
}
So we can not blame module developers too much

the core is not consistent too

and the module developer
have to be familiar with all of them to write correct codes

2- In many cases the module developer will received some kind of php/mysql error after adding extra prefix and can find that bad coding. but in very rare cases like this query for showing the existence of a table:
"SHOW TABLES LIKE '{$table}'"
there is not any php/mysql error. even the core logger will show you this:
SHOW TABLES LIKE my_table
because the xoops core logger will automatically
sanitized the query log and
will removed db prefix even if there were more than one prefix, all of them will be removed.

so again it is a bad job by the core and you can not blame the poor module developer because he didnt received any error

It would be really hard for him to find that why SHOW TABLES LIKE my_table result is empty

3- While Core 2.6.0 is rather clean, core 2.5.5 and 2.5.6 is full of hard-codes and unneeded extra codes and unneeded checking. So IMO adding one line which have many benefits will not be too much for that.
4- we can add some kind of logger errors after that line to warn the module developer that he added prefix more than once
function prefix($tablename = '')
{
if ($tablename != '') {
// check if database prefix is not added yet and then add it!!!
if (strpos($tablename, $this->prefix . "_") !== 0) {
$tablename= $this->prefix . '_' . $tablename;
$this->setLogger("DB Prefix is added");
} else {
$this->setLogger("You add prefix more than once but core ignore it. Please correct your codes");
}
return $tablename;
} else {
return $this->prefix;
}
}
}