The markup is flat-out invalid. You can test this with any markup validation tool.
The semantics make no sense. If the image specified by the <source>
element isn't loaded, then it should show the image specified by the <img>
element instead.
In the days of HTML 4, the empty attribute value would resolve to the HTML document itself (because it is a relative URL) which wouldn't make any sense. In HTML 5, it is a flat out error.
If you don't want to load an image on a certain display size, then use a CSS media query to set it to display: none
.