Whenever I have to correct a function from the HTMLSave` package, I either have to rewrite the whole function, but mostly, I just need to apply a few changes to the result that is returned by the function. In the latter case, one can use a construct like the following:
function[ args___ ] /;!TrueQ[UsePatchX] := Block[ {UsePatchQ=True,res},
(*any custom settings for the function, e.g. changing args: *)yourowncode;
(*call to original function: *)res=function[args];
(*change the result:*)yourowncode1;
res
];
The /;!TrueQ[UsePatchX] and the Block[{UsePatchX},...] are needed to that inside the block the old definition for the function is called and not our newly defined one.