Index: Singular/iparith.cc
===================================================================
--- Singular/iparith.cc	(revision ad095b3a00044601d1cdfcee9df36fec22361a1b)
+++ Singular/iparith.cc	(revision f0f2fea8b20a86e32a25ab7e9948aca2111645da)
@@ -8594,19 +8594,33 @@
       {
         int r=res->rtyp=dArith1[i].res;
-        #ifdef HAVE_PLURAL
-        if ((currRing!=NULL) && (rIsPluralRing(currRing)))
-        {
-          if ((dArith1[i].valid_for &PLURAL_MASK)==0 /*NO_PLURAL*/)
+	if (currRing!=NULL)
+	{
+          #ifdef HAVE_PLURAL
+          if ((currRing!=NULL) && (rIsPluralRing(currRing)))
           {
-            WerrorS(ii_not_for_plural);
-            break;
+            if ((dArith1[i].valid_for &PLURAL_MASK)==0 /*NO_PLURAL*/)
+            {
+              WerrorS(ii_not_for_plural);
+              break;
+            }
+            else if ((dArith1[i].valid_for &PLURAL_MASK)==2 /*, COMM_PLURAL */)
+            {
+              Warn("assume commutative subalgebra for cmd `%s`",Tok2Cmdname(i));
+            }
+            /* else, ALLOW_PLURAL */
           }
-          else if ((dArith1[i].valid_for &PLURAL_MASK)==2 /*, COMM_PLURAL */)
+          #endif
+          #ifdef HAVE_RINGS
+          if (rField_is_Ring(currRing))
           {
-            Warn("assume commutative subalgebra for cmd `%s`",Tok2Cmdname(i));
+            if ((dArith1[i].valid_for & RING_MASK)==0 /*NO_RING*/)
+            {
+              WerrorS(ii_not_for_ring);
+              break;
+            }
+            /* else ALLOW_RING */
           }
-          /* else, ALLOW_PLURAL */
-        }
-        #endif
+          #endif
+	}
         if (r<0)
         {
@@ -8778,7 +8792,9 @@
       {
         res->rtyp=dArith3[i].res;
-        #ifdef HAVE_PLURAL
-        if ((currRing!=NULL) && (rIsPluralRing(currRing)))
-        {
+        if (currRing!=NULL)
+	{
+          #ifdef HAVE_PLURAL
+          if (rIsPluralRing(currRing))
+          {
             if ((dArith3[i].valid_for &PLURAL_MASK)==0 /*NO_PLURAL*/)
             {
@@ -8791,6 +8807,18 @@
             }
             /* else, ALLOW_PLURAL */
-        }
-        #endif
+          }
+          #endif
+          #ifdef HAVE_RINGS
+          if (rField_is_Ring(currRing))
+          {
+            if ((dArith3[i].valid_for & RING_MASK)==0 /*NO_RING*/)
+            {
+              WerrorS(ii_not_for_ring);
+              break;
+            }
+            /* else ALLOW_RING */
+          }
+          #endif
+	}
         if ((call_failed=dArith3[i].p(res,a,b,c)))
         {
@@ -9008,20 +9036,33 @@
       {
         res->rtyp=dArithM[i].res;
-        #ifdef HAVE_PLURAL
-        if ((currRing!=NULL)
-        && (rIsPluralRing(currRing)))
-        {
-          if ((dArithM[i].valid_for &PLURAL_MASK)==0 /*NO_PLURAL*/)
+	if (currRing!=NULL)
+	{
+          #ifdef HAVE_PLURAL
+          if (rIsPluralRing(currRing))
           {
-            WerrorS(ii_not_for_plural);
-            break;
+            if ((dArithM[i].valid_for &PLURAL_MASK)==0 /*NO_PLURAL*/)
+            {
+              WerrorS(ii_not_for_plural);
+              break;
+            }
+            else if ((dArithM[i].valid_for &PLURAL_MASK)==2 /*, COMM_PLURAL */)
+            {
+              Warn("assume commutative subalgebra for cmd `%s`",Tok2Cmdname(i));
+            }
+            /* else ALLOW_PLURAL */
           }
-          else if ((dArithM[i].valid_for &PLURAL_MASK)==2 /*, COMM_PLURAL */)
+          #endif
+          #ifdef HAVE_RINGS
+          if (rField_is_Ring(currRing))
           {
-            Warn("assume commutative subalgebra for cmd `%s`",Tok2Cmdname(i));
+            if ((dArithM[i].valid_for & RING_MASK)==0 /*NO_RING*/)
+            {
+              WerrorS(ii_not_for_ring);
+              break;
+            }
+            /* else ALLOW_RING */
           }
-          /* else ALLOW_PLURAL */
-        }
-        #endif
+          #endif
+	}
         if (dArithM[i].p(res,a))
         {
