diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 6ec233f19df8..ea933be2f604 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -2028,7 +2028,7 @@ namespace ranges
 		      && !sized_sentinel_for<sentinel_t<_Range>,
 					     iterator_t<_Range>>)
 	  return (*this)(ranges::begin(__r),
-			 ranges::begin(__r) + ranges::size(__r),
+			 ranges::begin(__r) + ranges::distance(__r),
 			 std::forward<_Gen>(__g));
 	else
 	  return (*this)(ranges::begin(__r), ranges::end(__r),
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index d6a2170e45d8..842972eed4ca 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -1440,7 +1440,7 @@ namespace __format
 	      else if constexpr (ranges::random_access_range<_Rg>)
 		{
 		  ranges::iterator_t<_Rg> __first = ranges::begin(__rg);
-		  ranges::subrange __sub(__first, __first + __w);
+		  ranges::subrange __sub(__first, ranges::next(__first, __w));
 		  return _M_format_escaped(_String(from_range, __sub), __fc);
 		}
 	      else if (__w <= __n)
