/*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
{
if (span == 0) {
- yasm_internal_error(N_("cannot expand multiple yet"));
-
+ if (new_val < 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
+ return -1;
+ }
+ bc->mult_int = (unsigned long)new_val;
return 1;
}
if (!bc->callback) {
return; /* didn't exceed thresholds, we're done */
/* Exceeded thresholds, need to add to Q for expansion */
- switch (span->special) {
- case NOT_SPECIAL:
- STAILQ_INSERT_TAIL(&optd->QB, span, linkq);
- break;
- case SPECIAL_BC_OFFSET:
- STAILQ_INSERT_TAIL(&optd->QA, span, linkq);
- break;
- }
+ if (span->special == SPECIAL_BC_OFFSET || span->id == 0)
+ STAILQ_INSERT_TAIL(&optd->QA, span, linkq);
+ else
+ STAILQ_INSERT_TAIL(&optd->QB, span, linkq);
span->active = 2; /* Mark as being in Q */
}